In a layer list I used solid in some items and set color using ?attr/text_color
.
<stroke android:color="?attr/text_color" />
and set this drawable as background of a button. android:background="@drawable/myLayerListDrawable"
I was using this without any problem until I run this project on a lower api 18
.
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/myLayerListDrawable.xml from drawable resource ID #0x7f080063
Caused by: java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
Why is this happening and how this can be resolved !?
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>
------------------------------------------------------------------------------------------------------
Final Answer
We can't use ?attr in xml drawable resources pre api 21. Drawable resources created by aapt in compile time. Attr resources used for dynamic connection in runtime.
And the solution is to create different drawbles for every theme.