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.
- Recursos de apoyo para tabletas y móviles
- ¿La Acer Iconia Tab A500 admite el modo de accesorio?
- ¿Cómo puedo reflejar la salida sólo en dispositivos compatibles con HDCP?
- Desarrollo para la tableta Android, con la tableta física
- Emuladores de tablets en línea para Android
¿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.
- ¿Dónde está el controlador ADB de Windows para el C de píxeles?
- Diseño de aplicaciones de Android para tablets
- Cajón de navegación: ajuste siempre abierto en tabletas
- ¿Qué tabletas Android se pueden utilizar para probar aplicaciones web pesadas de Javascript
- La aplicación de Android para tablets sigue mostrando "Designed for Phones"
- Universal (tableta y teléfono) app - la mejor forma de estructura - múltiples xml de diseño o mostrar / ocultar widgets?
- La aplicación para Android no se muestra en Google Android Market para tablets
- El selector de fechas HTML5 se abre sólo en el segundo clic
¿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>
- Barra de herramientas de Android flecha posterior con icono como WhatsApp
- ¿Cómo seleccionar un video de la galería y obtener su camino real?