2010-10-29 22 views
14

soy un novato Android tratando de aprender el lado de interfaz de usuario de las cosas y que está haciendo en mi cabeza Esto es lo que tengo ahora:.¿Cómo doy estilo al elemento seleccionado en Android ListView?

breeds_listing.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" android:layout_height="wrap_content"> 
    <ListView android:id="@+id/breedsListView" 
     android:layout_width="fill_parent" android:layout_height="fill_parent" 
     android:dividerHeight="0px" android:divider="#00000000"></ListView> 
</LinearLayout> 

breeds_listing_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" android:layout_height="wrap_content" 
     android:background="@drawable/list_item_background" 
    android:orientation="horizontal" > 
    <TextView android:id="@+id/allbreeds_single_item" 
     android:layout_width="fill_parent" android:layout_height="fill_parent" 
     android:gravity="center_horizontal"></TextView> 
</LinearLayout> 

list_item_background.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#043402" /> 
    <stroke android:width="3dp" color="#ffff8080" /> 
    <corners android:radius="8dp" /> 
    <padding android:left="10dp" android:top="10dp" android:right="10dp" 
     android:bottom="10dp" /> 
</shape> 

W Lo que estoy luchando por averiguar es ¿cómo doy estilo al elemento seleccionado? En este momento, el objeto seleccionado tiene un fondo naranja espantoso que, bajo el rectángulo verde redondeado, le da un efecto de contorno anaranjado. Estoy seguro de que no hice las cosas de acuerdo con las mejores prácticas, por lo que cualquier sugerencia o mejora sería muy apreciada.

Muchas gracias, D.

Respuesta

26

Puedo hacer esto:

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

    <item android:state_pressed="true"> 
     <shape > 
     <solid android:color="#929292" /> 
     </shape> 
    </item> 



    <item> 
    <shape > 
     <solid android:color="#FFFFFF" /> 
    </shape> 
    </item> 

</selector> 

para que pueda usar esta propiedad android:state_pressed="true"

En mi ejemplo, el fondo de la celda sólo será blanco y gris cuando se presiona.

Espero que ayude!

+0

Yup - ¡Soy terrible olvidando votar o aceptar respuestas! Definitivamente trabajaré en eso ... acabo de volver a mis preguntas y marqué las que funcionaron para mí. Gracias por el amable recordatorio: o) – codedog

+0

Yippeeeee! Lo hice funcionar, ¡gracias por ayudarme a superar el bloqueo mental! ¡No sé por qué no pensé en esto porque hacemos algo muy similar en el mundo de trabajo de WPF! Era solo cuestión de encontrar el estado correcto para usar: o) – codedog

+0

Feliz de escuchar que funcionó para usted ^^ –

3

Tienes que usar un StateListDrawable.

Puede encontrar un ejemplo para los elementos ListView here.

Si desea un determinado color/dibujable cuando se selecciona el elemento, utilice android:state_focused="true".

Cuestiones relacionadas