2010-05-07 16 views
9

Quería diseñar un selector de texto personalizado que cambiara el color del texto cuando el usuario hace clic en TextView. Pero tiene el siguiente error:android: selector de texto personalizado

java.lang.RuntimeException: No se puede iniciar la actividad ComponentInfo {}: android.view.InflateException: Línea de archivo XML binario # 55: Error clase de inflado

aquí es lo que tengo: estirable/text_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <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> 

diseño/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" /> 

valores/color.xml

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

Respuesta

24

No se puede asignar a dibujable textColor. Tiene que ser un Color.

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

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

crear una carpeta de color en sus res, guarde este archivo como mycolor.xml y asignarlo a textColor como el color @/MyColor selector de uso

+0

¿Tiene que ser la carpeta de color? ¿No puedo ponerlo debajo de la carpeta de valores? Lo intenté no funcionó bajo valores/ – Yang

+1

tiene que ser de color. ¿Por qué lo pondrías en valores? También asegúrese de que su vista obtenga el estado del padre. –

+0

gracias, la excepción ya no existe. Sin embargo, cuando hago clic en la vista de texto, el color no cambia. Me pregunto si hay un estado llamado presionado? ¿O solo por botón? ¿Qué estado debo especificar cuando el usuario hace clic en un textivew? – Yang

0

de la siguiente manera:

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

    android:color="@color/c1" /> 
<item 
    android:color="@color/c2" /> 

Cuestiones relacionadas