重新使用具有与主题相关的颜色的渐变可绘制对象
在两个不同的活动中,我想使用相同的渐变可绘制但颜色不同。 我认为按照以下方式将渐变颜色引用到活动主题:
我
<attr name="backgroundTopColor" format="color" />
<attr name="backgroundBottomColor" format="color" />
在 bg_gradient.xml 中的 attrs.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: 错误/AndroidRuntime(2096): 原因: java.lang.UnsupportedOperationException: 无法转换为颜色: type=0x2
02-07 14:03:59.479:错误/AndroidRuntime(2096):在 android.content.res.TypedArray.getColor(TypedArray.java:326)
02-07 14:03:59.479:错误/AndroidRuntime(2096):在android.graphics.drawable.GradientDrawable.inflate(GradientDrawable.java:647)
02-07 14:03:59.479:错误/AndroidRuntime(2096):在android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
02-07 14:03:59.479:错误/AndroidRuntime(2096):在 android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
02-07 14:03:59.479:错误/AndroidRuntime(2096):在android.content.res.Resources.loadDrawable(Resources.java:1694)
02-07 14:03:59.479: 错误/AndroidRuntime(2096): ... 29 更多
我该如何解决这个问题?
谢谢
注意:API 级别 = 8
In two different activities I want to use same gradient drawable but with different colors.
I think to refer gradient colors to activity theme in follow way:
I've added follow rows in attrs.xml
<attr name="backgroundTopColor" format="color" />
<attr name="backgroundBottomColor" format="color" />
in bg_gradient.xml I typed
<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>
In activity theme, I've added
<item name="backgroundTopColor">#FFFFFFFF</item>
<item name="backgroundBottomColor">#FFFFFF00</item>
After application start in logcat
02-07 14:03:59.479: ERROR/AndroidRuntime(2096): Caused by: java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
02-07 14:03:59.479: ERROR/AndroidRuntime(2096): at android.content.res.TypedArray.getColor(TypedArray.java:326)
02-07 14:03:59.479: ERROR/AndroidRuntime(2096): at android.graphics.drawable.GradientDrawable.inflate(GradientDrawable.java:647)
02-07 14:03:59.479: ERROR/AndroidRuntime(2096): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
02-07 14:03:59.479: ERROR/AndroidRuntime(2096): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
02-07 14:03:59.479: ERROR/AndroidRuntime(2096): at android.content.res.Resources.loadDrawable(Resources.java:1694)
02-07 14:03:59.479: ERROR/AndroidRuntime(2096): ... 29 more
How I can solve this?
Thank you
NB: API level = 8
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该使用
"?attr/backgroundTopColor"
而不是"?backgroundTopColor"
来引用您的属性。编辑:如果间接引用颜色会发生什么?而不是在你的主题中说:
你这样做:
然后在colors.xml中,你添加:
我怀疑可能发生的情况是该属性期望显式颜色。至少,我已经完全按照您的概述进行了操作,只是我总是间接引用颜色而不是将其直接放入我的主题中。
You should use
"?attr/backgroundTopColor"
instead of"?backgroundTopColor"
to reference your attributes.Edit: What happens if you indirectly reference the color? Instead of in your theme saying:
You do this:
Then in colors.xml, you add:
I suspect that what might be happening is that the attribute is expecting an explicit color. At the very least, I've done exactly what you outline, except that I always indirectly reference the color rather than putting it right into my theme.