views:

383

answers:

1

I wanted to design a customized text selector that changed the text color when user clicks the TextView. But got the following error:

java.lang.RuntimeException: Unable to start activity ComponentInfo{}: android.view.InflateException: Binary XML file line #55: Error inflating class

here is what I have: drawable/text_selector.xml

    <selector xmlns:android="http://schemas.android.com/apk/res/android"&gt; 
  <item android:state_enabled="false" 
        android:state_focused="true" 
        android:drawable="@color/black" /> 
  <item android:state_pressed="true" 
        android:drawable="@color/blue" /> 
  <item android:state_focused="true" 
        android:drawable="@color/black" /> 
</selector> 

layout/textview.xml

<TextView android:id = "@+id/last_page_button"
    android:text="@string/last_page_button_string" 
    android:gravity="center_horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:background="#ffffff"
    android:textColor = "@drawable/text_selector"
    android:layout_weight="1" />

values/color.xml

<resources> 
    <color name="white">#ffffffff</color> 
    <color name="black">#ff000000</color> 
    <color name="blue">#ffccddff</color>

+1  A: 

You can't assign drawable to textColor. It has to be a Color.

<selector
    xmlns:android="http://schemas.android.com/apk/res/android"&gt;
    <item
        android:state_selected="true"

        android:color="@color/color1" />
    <item
        android:color="@color/color2" />
</selector>

create a folder color in your res , save this file as mycolor.xml and assign it to textColor as @color/mycolor

Alex Volovoy
Does it have to be the color folder? Can't I put it under the values folder? I tried it didn't work under values/
Yang
it has to be color . Why would you put it in values ? Also make sure that your view is getting state from the parent.
Alex Volovoy
thanks, the exception no longer exisits. However, when I "click" the textview, the color doesn't change. I'm wondering if there is a state called pressed? Or is that for button only? What state should I specify when user clicked a textivew?
Yang