gpt4 book ai didi

android - 重新使用具有主题相关颜色的渐变可绘制对象

转载 作者:太空狗 更新时间:2023-10-29 15:23:27 26 4
gpt4 key购买 nike

在两个不同的 Activity 中,我想使用相同的渐变可绘制对象但颜色不同。我想通过以下方式将渐变颜色引用到 Activity 主题:

我在 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>

在 Activity 主题中,我添加了

<item name="backgroundTopColor">#FFFFFFFF</item>
<item name="backgroundBottomColor">#FFFFFF00</item>

应用程序在 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

我该如何解决这个问题?

谢谢

注意:API 级别 = 8

最佳答案

您应该使用 "?attr/backgroundTopColor" 而不是 "?backgroundTopColor" 来引用您的属性。

编辑:如果您间接引用颜色会怎样?而不是在你的主题中说:

<item name="backgroundTopColor">#FFFFFFFF</item>

你这样做:

<item name="backgroundTopColor">@color/myColor</item>

然后在 colors.xml 中,添加:

<color name="myColor">#FFFFFFFF</color>

我怀疑可能发生的情况是属性需要明确的颜色。至少,我完全按照您的概述做了,除了我总是间接引用颜色而不是将其直接放入我的主题中。

关于android - 重新使用具有主题相关颜色的渐变可绘制对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4922381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com