在两个不同的活动中,我想使用相同的渐变可绘制但具有不同的颜色。 我想按照以下方式将渐变颜色引用到活动主题:
我在attrs.xml中添加了跟随行
<attr name="backgroundTopColor" format="color" />
<attr name="backgroundBottomColor" format="color" />
在我输入的bg_gradient.xml中
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="?backgroundTopColor"
android:endColor="?backgroundBottomColor"
android:angle="270" />
<corners android:radius="0dp" />
</shape>
在活动主题中,我添加了
<item name="backgroundTopColor">#FFFFFFFF</item>
<item name="backgroundBottomColor">#FFFFFF00</item>
在logcat中启动应用程序后
02-07 14:03:59.479:ERROR / AndroidRuntime(2096):引起:java.lang.UnsupportedOperationException:无法转换为颜色:type = 0x2
02-07 14:03:59.479:ERROR / AndroidRuntime(2096):在android.content.res.TypedArray.getColor(TypedArray.java:326)
02-07 14:03:59.479:ERROR / AndroidRuntime(2096):在android.graphics.drawable.GradientDrawable.inflate(GradientDrawable.java:647)
02-07 14:03:59.479:ERROR / AndroidRuntime(2096):在android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
02-07 14:03:59.479:ERROR / AndroidRuntime(2096):在android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
02-07 14:03:59.479:ERROR / AndroidRuntime(2096):在android.content.res.Resources.loadDrawable(Resources.java:1694)
02-07 14:03:59.479:ERROR / AndroidRuntime(2096):... 29更多
我如何解决这个问题?
谢谢
注意:API级别= 8
答案 0 :(得分:0)
您应该使用"?attr/backgroundTopColor"
代替"?backgroundTopColor"
来引用您的属性。
编辑:如果您间接引用颜色会发生什么?而不是在你的主题中说:
<item name="backgroundTopColor">#FFFFFFFF</item>
你这样做:
<item name="backgroundTopColor">@color/myColor</item>
然后在colors.xml中添加:
<color name="myColor">#FFFFFFFF</color>
我怀疑可能发生的是该属性期待一种明确的颜色。至少,我已经完成了你的轮廓,除了我总是间接地引用颜色而不是把它放到我的主题中。