问题标签 [declare-styleable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何为自定义组件设置样式?
我有 2 个模块:
app
- layout.xml -styles.xml
-
attrs.xml
核心
- CustomComponent.java
在模块核心中有一个自定义组件,称为 CustomComponent,我在应用程序模块中使用它,并且我想在其中设置自定义样式,如下所示
布局.xml
样式.xml
attrs.xml
自定义组件.java
我想达到以下结果:
在 CustomComponent 中设置样式
customNS:chart_style="@style/MyCustomStyle"
后
,我想找到这种样式,对其进行解析并获取所有需要的值。
但我找不到为此工作的代码。
您能否建议如何达到这样的结果?
java - 如何通过反射从声明样式的 TypedArray 中获取值?
我正在使用形状图像视图(https://github.com/siyamed/android-shape-imageview),当我想从形状图像视图定义的 declare-styleable 中获取值时:
我有问题。我对形状图像视图的 xml 用法:
这是我的代码:
IdHelper 中定义的方法:
当我运行我的应用程序时,我得到了日志:
01-11 17:04:07.244 3744-3744/? W/System.err:引起:java.lang.reflect.InvocationTargetException 01-11 17:04:07.247 3744-3744/?W/System.err: at java.lang.reflect.Constructor.constructNative(Native Method) 01-11 17:04:07.247 3744-3744/? W/System.err:在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 01-11 17:04:07.247 3744-3744/?W/System.err:在 android.view.LayoutInflater.createView(LayoutInflater.java:594) 01-11 17:04:07.247 3744-3744/?W/System.err: ... 57 更多 01-11 17:04:07.247 3744-3744/? W/System.err:原因:java.lang.UnsupportedOperationException:无法转换为维度:type=0x10 01-11 17:04:07.252 3744-3744/?W/System.err:在 android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:464) 01-11 17:04:07.252 3744-3744/?W/System.err:在 cn.jmessage.android。uikit.chatting.shader.ShaderHelper.init(ShaderHelper.java:80) 01-11 17:04:07.252 3744-3744/? W/System.err:在 cn.jmessage.android.uikit.chatting.shader.BubbleShader.init(BubbleShader.java:45) 01-11 17:04:07.253 3744-3744/?W/System.err:在 cn.jmessage.android.uikit.chatting.ShaderImageView.setup(ShaderImageView.java:45) 01-11 17:04:07.253 3744-3744/?W/System.err:在 cn.jmessage.android.uikit.chatting.ShaderImageView.(ShaderImageView.java:36) 01-11 17:04:07.253 3744-3744/?W/System.err:在 cn.jmessage.android.uikit.chatting.BubbleImageView.(BubbleImageView.java:27) 01-11 17:04:07.253 3744-3744/?W/System.err: ... 60 更多 45) 01-11 17:04:07.253 3744-3744/? W/System.err:在 cn.jmessage.android.uikit.chatting.ShaderImageView.setup(ShaderImageView.java:45) 01-11 17:04:07.253 3744-3744/?W/System.err:在 cn.jmessage.android.uikit.chatting.ShaderImageView.(ShaderImageView.java:36) 01-11 17:04:07.253 3744-3744/?W/System.err:在 cn.jmessage.android.uikit.chatting.BubbleImageView.(BubbleImageView.java:27) 01-11 17:04:07.253 3744-3744/?W/System.err: ... 60 更多 45) 01-11 17:04:07.253 3744-3744/? W/System.err:在 cn.jmessage.android.uikit.chatting.ShaderImageView.setup(ShaderImageView.java:45) 01-11 17:04:07.253 3744-3744/?W/System.err:在 cn.jmessage.android.uikit.chatting.ShaderImageView.(ShaderImageView.java:36) 01-11 17:04:07.253 3744-3744/?W/System.err:在 cn.jmessage.android.uikit.chatting.BubbleImageView.(BubbleImageView.java:27) 01-11 17:04:07.253 3744-3744/?W/System.err: ... 60 更多 27) 01-11 17:04:07.253 3744-3744/? W/System.err: ... 60 更多 27) 01-11 17:04:07.253 3744-3744/? W/System.err: ... 60 更多
我怎么解决这个问题?
android - 棒棒糖前的 getTheme().resolveAttribute() 替代方案
我一直在努力使用 pre-lollipop API 获取样式属性。
用棒棒糖,我用
这完美无缺,我在 API 版本 21 下没有找到类似的方法。(minAPI = 16)
我尝试使用getTheme().obtainStyledAttributes()
. 但是,我没有AttributeSet
提供该方法,因为我在活动中使用它。我做的事情是完全错误的,还是解决了低于 21 的 API 版本不支持的样式属性?
android - 安卓:方法属性
在属性中如何接受方法作为值?就像在视图的 onClick 属性中一样:
如何定义接受方法的自定义属性?
我知道我们<declare-styleable>
在资源中使用,但我们如何让它接受方法?
android - 如何将布局宽度/高度的值传递给自定义视图类
我正在创建一个具有扩展线性布局的类(圆形按钮)的模块。它包含一个图像视图和一个文本视图。
在 XML 文件中声明圆形按钮视图时,会分配 layout_width 和 layout_height 值。我希望图像视图尺寸与分配的布局尺寸成比例。因此,如何将布局尺寸传递给视图类,以便我可以将比例尺寸分配给图像视图?
PS:这个问题不涉及传递自定义属性。但处理将android:layout_width
and传递android:layout_height
给自定义 UI 类。
android - Facebook Shimmer 集成错误
在集成 Facebook 微光时,当我尝试演示项目时,它运行良好。但是现在当我将它集成到我的实际项目中时,它给了我以下错误:
错误:(593) 属性“形状”已用不兼容的格式定义
谁能帮我解决这个问题?
java - 如何获取枚举自定义属性的所有可能值?
假设我的my_custom_enum
视图有一个自定义属性:
有没有办法在代码中获取这个枚举的所有可能值?
换句话说:
我想有一种方法来获取值751
、2222
和。
这些值也很好,但不是强制性的。1241
4
names
android - 如何使用自定义属性(如错误)使 EditText 的颜色可样式化?
我想制作一个 EditText,当满足“错误”条件时,其文本变为红色。我知道 TextInputLayout 有一个内置的错误状态,但我不想在输入区域下面有文本,我不想在我的项目中包含支持设计库(这是一个 sdk - 所以其他人将包括它)。但是,我的 EditText总是显示错误状态,我不知道为什么。
到目前为止我的努力:
首先,我声明一个可样式化的东西。看起来不错。
然后我在我的res/colors
目录中创建一个选择器。现在,如果设置了我的特殊属性,我真的更喜欢只覆盖颜色。但是,如果我必须复制android:state-pressed
等 状态及其每个组合,我可以这样做(并且具有相同的结果,请参见下文)。这个文件是res/color/red_on_error_dark.xml
.
然后我将我的新时尚事物添加到我的自定义类的 XML 包含中:
到目前为止,一切都很好。现在,我创建了扩展 EditText 的类:
所有这些都很容易组合在一起。但是,当我运行代码时,它总是将文本绘制为红色。
我已经验证的事情:
- 我正确设置了错误/无错误状态。
onCreateDrawableState
代码在非错误时间内通过该方法!它跳过mergeDrawableStates
具有额外属性的方法。(我还添加了一个else
子句并返回了一个没有添加额外空格的 drawableState)。即使该属性是布尔值,并且理论上应该能够接受 true 或 false 的值,我还是添加了一个单独的 attr
STATE_VALID
,并将我的选择器更改为如下。
我什至将选择器更改为详尽无遗:
而且我走得更远,将不必要的额外状态与一堆 结合起来android:state_blah
,所以我的选择器中有 20 种不同的情况。(实际上,在这种情况下,它总是保持白色,也好不了多少)。
现在,我真正非常喜欢的是声明一个可样式化的值,其他人(使用我的 sdk)可以设置一个值,如果他们愿意的话。但是现在我很高兴知道为什么文本总是红色的。
编辑:一个完全合法的解决方法是当我在MySpecialEditText
. 这是我的临时解决方案,但它阻止了某人使用我的控件并custom:state_error=@color/some_custom_color
在他们选择的主题中添加一个 或类似的值。只要我手动调用 setTextColor,错误颜色总是我特定的红色阴影。
我可以更进一步,为错误颜色添加一个新的构造函数或设置器,但这对于库来说不是一个很好的解决方案。如果您使用该库并实例化我的控件,它将获取EditText
您已经拥有的所有样式,因此它看起来很原生。如果您想自定义错误颜色,我希望您能够在一个地方为您的整个应用程序执行此操作,其中包含一段可以由设计人员运行的漂亮 XML。
有任何想法吗?先发制人地感谢所有回答者和尝试回答者。