Android: mantener el fondo azul después de la selección ListView

Tengo un ListView, y funciona muy bien en un teléfono. Ahora estoy haciendo una tableta de interfaz de usuario, con el ListView a la izquierda y los detalles a la derecha.

Cuando toco un elemento, parpadea en azul mientras se presiona. Quiero guardar ese color azul hasta que se seleccione otro elemento, al igual que la aplicación de Gmail en el Nexus 7.

¿Cuál es la manera más limpia de lograrlo? Prefiero evitar configurar fondos manualmente, supongo que hay una manera de marcar un elemento como el "activo" y el tema en consecuencia.

¿Cuál es la manera más limpia de lograrlo?

Lo que está buscando es conocido como el estado "activado". Para hacer este trabajo:

Paso # 1: En res/values-v11/ , tiene un recurso de estilo que implementa activated . Por ejemplo, para un proyecto nuevo que tenga la declaración AppTheme definida allí, vaya con algo como:

 <resources> <style name="AppTheme" parent="android:Theme.Holo.Light"></style> <style name="activated" parent="AppTheme"> <item name="android:background">?android:attr/activatedBackgroundIndicator</item> </style> </resources> 

Paso # 2: Defina el mismo estilo en res/values/ para cualquier dispositivo antiguo, tal como un recurso de estilo de stub, por lo que las referencias a él continúan funcionando:

 <resources> <style name="AppTheme" parent="android:Theme.Light"/> <style name="activated" parent="AppTheme"/> </resources> 

Paso # 3: En el recurso XML de la presentación para la fila de ListView , añada style="@style/activated" a la lista de atributos del elemento raíz

Paso # 4: Establezca ListView para ser una lista de una sola opción, como la siguiente línea en un ListFragment :

 getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

Puede ver esto en acción en este proyecto de muestra , en este proyecto de ejemplo y en este proyecto de ejemplo . Para más información sobre las dos primeras muestras, vea esta pregunta de SO: ¿ Completa muestra de trabajo del escenario de animación de tres fragmentos de Gmail?

Utilizando

android.R.layout.simple_list_item_activated_1

en lugar de

R.layout.simple_list_item_checkable_1 .

Sólo para alguien verificación algún día.

Después de días de búsqueda y tirando de mi cabello acabo de descubrir que activatedBackgroundIndicator también está disponible en el sistema de estilo ActionBarSherlock. La mayoría de los desarrolladores que desarrollan aplicaciones compatibles con versiones anteriores, utilizan ActionBarSherlock, por lo que usar ActionBarSherlock es una buena opción para la mayoría de los casos. Así que en lugar de usar android:background="?android:attr/activatedBackgroundIndicator" que dará errores en las versiones de android antes de 11, sólo uso: android:background="?activatedBackgroundIndicator"

Aquí está el ejemplo de código de xml de diseño de fila:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" //note the activatedBackgroundIndicator android:background="?activatedBackgroundIndicator" android:minHeight="?android:attr/listPreferredItemHeight" android:paddingBottom="2dip" android:paddingTop="2dip" > <TextView android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:minHeight="?android:attr/listPreferredItemHeight" android:paddingLeft="6dip" android:paddingRight="6dip" android:textSize="15sp" /> <TextView android:id="@+id/text2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:minHeight="?android:attr/listPreferredItemHeight" android:paddingRight="5dip" android:textSize="20dip" /> </LinearLayout> 
  • @ Font-face problema de representación en la etiqueta de párrafo, Chrome Android 4
  • Desarrollo de Android en la tableta: ¿Funcionará Eclipse en la tableta de Windows?
  • ¿Es posible instalar xampp en un dispositivo móvil como una pestaña de galaxia o ipad?
  • ¿Por qué mi aplicación no aparece en tablets en Google Play?
  • Archos 101 internet tablet: ¿Es posible ocultar los botones predeterminados de Android (software)
  • ¿Cómo saber si su una tableta o un teléfono en android programmatically?
  • Google IO Sched App - Disposición de tableta y fragmentos
  • Configuración de dispositivo virtual Android para una tableta de 7 pulgadas en Android SDK 2.3.3
  • Programación en la tableta Android
  • El menú de opciones de onCreate no se muestra en android 3.1
  • ¿Cómo bloqueo la orientación de la pantalla para el teléfono, pero no para la tableta? (Androide)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.