我的选择器是:
<item android:state_pressed="true" android:color="@color/bg_grey"/>
<item android:state_focused="true" android:color="@color/bg_grey"/>
<item android:color="@color/white"/>
我的TextView为:
<TextView
android:id="@+id/tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@drawable/textview_selector"
android:padding="5dp"
android:text="Some Text"
android:textColor="@color/text_grey"
android:textSize="16dp" />
这样我得到了:
android.view.InflateException: Binary xml file line #68: Error inflating class <unknown>
如果我使用此选择器作为android:textColor="@drawable/textview_selector"
其工作正常
答案 0 :(得分:9)
这里的问题是你无法使用颜色选择器定义背景颜色,你需要一个可绘制的选择器。因此,必要的更改将如下所示:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@drawable/selected_state" />
</selector>
您还需要将该资源移动到drawable目录,因为它本身不是颜色选择器,因此更有意义。
然后你必须像这样创建res / drawable / selected_state.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/bg_grey" />
</shape>
最后,你会像这样使用它:
android:background="@drawable/selector"
答案 1 :(得分:1)
您正在定义Color以代替选择器xml中的Drawable背景,尝试使用背景 可绘制
答案 2 :(得分:0)
您只需确保颜色位于colors.xml文件中,并且不要将十六进制颜色直接放入选择器项目中。
my_selector.xml:
IFS='[0-9]' # how to define IFS with regex?
echo ${msg[@]}
并使您的textview看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/category_item_selected_color" android:state_selected="true"/>
<item android:drawable="@color/category_item_selected_color" android:state_pressed="true"/>
<item android:drawable="@color/white" />
</selector>