Selector de Android y color de texto

Resuelto yanchenko asked hace 54 años • 9 respuestas

Quiero que un simple TextViewse comporte como simple_list_item_1lo ListViewhace. Aquí está el XML:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content" android:layout_width="fill_parent"
    android:gravity="center" android:focusable="true"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:background="@android:drawable/list_selector_background" />

Todo funciona excepto el color del texto que (como era de esperar) no cambia en el estado enfocado. ¿ Cómo hago para que cambie a textAppearanceLargeInverse?

yanchenko avatar Jan 01 '70 08:01 yanchenko
Aceptado

Lo logré haciendo varias pruebas hasta que una funcionó, así que: res/color/button_dark_text.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="#000000" /> <!-- pressed -->
     <item android:state_focused="true"
           android:color="#000000" /> <!-- focused -->
     <item android:color="#FFFFFF" /> <!-- default -->
 </selector>

res/diseño/view.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
    <Button
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="EXIT"
       android:textColor="@color/button_dark_text" />
</LinearLayout>
Klaus Balduino avatar Aug 25 '2010 12:08 Klaus Balduino

Y el selector también es la respuesta aquí.

Busque bright_text_dark_focused.xml en las fuentes, agréguelo a su proyecto en el directorio res/color y luego consulte desde TextView como

android:textColor="@color/bright_text_dark_focused"
yanchenko avatar Aug 14 '2009 21:08 yanchenko

Para que funcione en la selección en una vista de lista, utilice el siguiente código:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="#fff"/>
    <item android:state_activated="true" android:color="#fff"/>
    <item android:color="#000" />
</selector>

Aparentemente la clave es state_activated="true"el estado.

Manuel Escrig avatar Oct 07 '2014 08:10 Manuel Escrig

Aquí está mi implementación, que se comporta exactamente como el elemento de la lista (al menos en 2.3)

res/layout/list_video_footer.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/list_video_footer"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@android:drawable/list_selector_background"
        android:clickable="true"
        android:gravity="center"
        android:minHeight="98px"
        android:text="@string/more"
        android:textColor="@color/bright_text_dark_focused"
        android:textSize="18dp"
        android:textStyle="bold" />

</FrameLayout>

res/color/bright_text_dark_focused.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_selected="true" android:color="#444"/>
    <item android:state_focused="true" android:color="#444"/>
    <item android:state_pressed="true" android:color="#444"/>
    <item android:color="#ccc"/>

</selector>
k4dima avatar Dec 15 '2011 23:12 k4dima