在图层列表中,我在某些项目中使用了纯色,并使用?attr/text_color
设置了颜色。
<stroke android:color="?attr/text_color" />
,并将此可绘制对象设置为按钮的背景。 android:background="@drawable/myLayerListDrawable"
直到我在较低的api 18
上运行该项目之前,我一直都在使用它。
原因:android.content.res.Resources $ NotFoundException:文件 可绘制资源ID#0x7f080063中的res / drawable / myLayerListDrawable.xml
原因:java.lang.UnsupportedOperationException:无法转换为 颜色:type = 0x2
为什么会这样以及如何解决!!
res \ drawable \ myLayerListDrawable.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<selector>
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="?attr/background_button_pressed" />
<stroke
android:width="0.7dp"
android:color="?attr/text_color" />
<corners android:radius="10dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
<stroke
android:width="0.7dp"
android:color="?attr/text_color" />
<corners android:radius="10dp" />
</shape>
</item>
</selector>
</item>
-------------------------------------------- -------------------------------------------------- --------
最终答案
我们无法在api 21之前的XML可绘制资源中使用?attr aapt在编译时创建的资源。用于的Attr资源 运行时动态连接。
解决方案是为每个主题创建不同的图块。
答案 0 :(得分:0)
您无法访问"?attr/myColor
之类的颜色资源
有关更多信息,请阅读
使用
<stroke android:color="@color/myColor" />
代替
<stroke android:color="?attr/myColor" />
并确保您在 res / values / colors.XML
中添加了myColor
答案 1 :(得分:0)
您必须在样式或attr文件中添加参考。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Attributes must be lowercase as we want to use them for drawables -->
<attr name="myColor" format="reference" />
</resources>
并将其添加到您的主题:
<item name="myColor">#c3c3c3</item>