2010-07-16 1579 views
37

Tengo un diseño lineal en el que cada fila está inflada programáticamente y quiero que las filas se comporten como ListView cuando se hace clic en ellas. Es decir, quiero que la fila resalte de la misma manera/color que el ListView predeterminado. ¿Cómo voy a hacer esto?Android cómo hacer resaltar la vista cuando se hace clic?

Respuesta

56

Ok, finalmente he descubierto cómo hacer esto ... básicamente se hace usando un selector como el selector de color vinculado por estilo, excepto que en lugar de 'color' use un dibujable para los estados y puede hacer referencia al predeterminado lista dibujable que se utiliza en ListView por este:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true" 
    android:drawable="@android:drawable/list_selector_background" />  
</selector> 

y utilizando este xml como fondo para mi vista.

Todos los dibujables por defecto públicos se pueden encontrar aquí: http://developer.android.com/reference/android/R.drawable.html

+0

Gracias por compartir una vez que lo encontraste. –

+6

Si eres como yo y necesitas algunos antecedentes sobre cómo usar este tipo de selector, lee: http://android-journey.blogspot.com/2009/12/android-selectors.html –

+0

¿Por casualidad sabes cómo? para mantener seleccionada la vista de texto? Tengo dos fragmentos 1 una vista de lista y 1 una vista de texto de información. Una vez que se selecciona un elemento en la vista de lista, el elemento en la vista de texto cambia. ¿Hay alguna manera de mantener seleccionado el elemento de lista seleccionado? – ksudu94

2

This podría ser un buen lugar para empezar a buscar.

Aunque, le aconsejo que use el ListView, en lugar de implementarlo de nuevo.

+0

Yo usaría ListView aunque lo necesito NO para desplazarme y colocarlo dentro de un ScrolView y eso no parece posible (??) ... Así que terminé intentando Implementar mi propio ListView de ordenamiento utilizando LinearLayout. – Kman

+0

y gracias o el enlace ... pero, ¿sería posible hacer referencia y usar el elemento selector de ListViews predeterminado en lugar de crear el mío? – Kman

+0

puede buscar el XML dentro del código fuente de Android ... y solo copiarlo? No estoy seguro de si refiere el selector existente, de lo contrario. – st0le

20

yo era capaz de hacer lo mismo con una vista de texto que quería comportarse como un elemento de la lista mediante el uso de:

<Textview 
.... 
android:background="@android:drawable/list_selector_background" 
/> 
+2

Esta es la mejor solución. Gracias – Atomix

+6

Buena respuesta. Para API 11 y superior, use en su lugar 'android: background ="? Android: attr/seleccionableItemBackground "'. Más información [aquí:] (http://stackoverflow.com/questions/5546514/making-a-linearlayout-act-like-an-button) –

+1

..y con la biblioteca appcompat-v7 ahora puede usar? Attr/seleccionableItemBackground para compatibilidad con versiones anteriores – Egor

2

si usted todavía tiene un problema con eso, por favor, recuerde que algunos de los elementos de interfaz de usuario no son hacer clic (RelativeLayout), así que hay que añadir una línea más:

<RelativeLayout 
    .... 
    android:clickable="true" 
    ... 
1

A su lista de vista establecer propiedad

android:listSelector="@color/test" 

y este color de prueba establece cualquier color transparente que desee. puede crear cualquier color transparente usando hex transparent color

Cuestiones relacionadas