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

标签 android colors gradient drawable attr

在两个不同的 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/

相关文章:

android - 如何在Flutter应用中创建启动屏幕

java - 将输入流转换为 JSONArrary 时出现空异常

java - 平均图像的四个像素会产生不稳定的颜色

python - 彩色图像卷积核的 tensorflow 权重?

Python Imaging Library (PIL) 绘图--带渐变的圆角矩形

css - FF 和 IE 中的平滑渐变

java - 如何将按钮添加到 libgdx 中的 ApplicationAdapter?

android - 如何根据Android构建中的自定义扩展变量有选择地将srcDir添加到 flavor 中?

OpenGL纹理颜色错误

python - 区别 - tf.gradients 与 tf.keras.backend.gradients