根据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>

当然,您需要在可绘制文件夹中定义两个可绘制对象myDrawable1myDrawable2,每个都具有正确的颜色硬编码。

而且效果很好。

关于android - 如何向Android :startColor in gradient drawable in Android?添加主题属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8801225/

10-10 10:18