Saltar al contenido

Usando el selector para cambiar el color del texto de TextView

Solución:

1) Use tab_text_selector.xml como se muestra a continuación y colóquelo en la carpeta res / color:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:color="@android:color/white" />
    <item android:state_focused="true" android:color="@android:color/white" />
    <item android:state_pressed="true" android:color="@android:color/white" />
    <item android:color="#504f4f" /> <!-- default case -->
</selector>

Y configúrelo en su vista de texto como se muestra a continuación.

TextView tv = (TextView) findViewById(R.id.TextView1) ;
tv.setTextColor(context.getResources().getColor(R.color.tab_text_selector));

2) La segunda opción es si está usando textview en xml en lugar de usar programáticamente, use tab_text_selector.xml como se muestra a continuación:

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:text="TextView"
    android:textColor="@‌​drawable/tab_text_sel‌​ector" />

Tienes que usar getColorStateList (). Y para XML, vea aquí.

También estaba luchando con este problema. Si quieres usar un state list, debe declararlo en el color carpeta de recursos, en lugar de la drawable carpeta, y use la setTextColor(getResources().getColorStateList(R.color.tab_text_selector)) método.

Úselo de esta manera:

tab_text_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true" android:color="#FF111111"/>  
    <item android:state_focused="true" android:color="#FF222222"/>    
    <item android:state_selected="true" android:color="#FF333333"/> 
</selector>

Vista de texto:

TextView txtTab = new TextView(this);

XmlResourceParser xrp = getResources().getXml(R.drawable.tab_text_selector);  
try {  
    ColorStateList csl = ColorStateList.createFromXml(getResources(), xrp);  
    txtTab.setTextColor(csl);  
} catch (Exception e) {  } 

txtTab.setBackgroundResource(R.drawable.tab_bg_selector);
txtTab.setGravity(Gravity.CENTER);
txtTab.setText("Agregar Idea");

Pero es mejor ponerle color /res/color/yourcolor.xml

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *