根据android文档,android:startColor可以将属性作为值:
我正在尝试向渐变可绘制对象添加属性,但是出现错误。这是drawable的代码:
这是style.xml中的代码:
<style name="test" parent="android:Theme">
<item name="android:startColor">#0b2749</item>
<item name="startColor">#0b2749</item>
</style>
当我尝试运行 Activity 时,出现以下错误消息:
01-10 20:47:30.810: E/AndroidRuntime(7279): Caused by: java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
我尝试将?startColor更改为?attr/startColor,仍然遇到相同的错误。我还将主题应用于AndroidManifest.xml文件中的 Activity 。
如何为渐变可绘制对象添加主题属性?
最佳答案
我在一个可绘制对象中遇到了相同的问题,其中我希望根据所选主题使用不同的颜色。我找到了一种解决方法,它不能完全解决问题,但对我有用。我没有定义样式中的颜色,而是将整个可绘制对象定义为引用。
在attrs.xml
中:
<resources>
<attr name="myDrawable" format="reference"/>
<resources>
在我的
style.xml
中:<style name="style1">
<item name="myDrawable">@drawable/myDrawable1</item>
<style>
<style name="style2">
<item name="myDrawable">@drawable/myDrawable2</item>
<style>
当然,您需要在可绘制文件夹中定义两个可绘制对象
myDrawable1
和myDrawable2
,每个都具有正确的颜色硬编码。而且效果很好。
关于android - 如何向Android :startColor in gradient drawable in Android?添加主题属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8801225/