La vista de lista establece un selector de rizado personalizado

Estoy tratando de usar un control de vista de lista en Lollipop bajo las siguientes condiciones:

  1. El tipo de tema es el Theme.Material predeterminado (tema oscuro).
  2. La vista de lista está contenida dentro de la disposición más grande que tiene un fondo blanco.
  3. La vista de lista debe tener un selector de lista que aparece con el fondo blanco.

NOTA: Tengo que usar un color selector de lista personalizado porque si utilizo un fondo blanco, el selector temático de material oscuro utiliza el color ColorControlHighlight del tema para el ripple, que es 40ffffff y no aparece.

Primero probé lo siguiente:

Layout xml

<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:background="@android:color/white" > <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:listSelector="@drawable/list_selector" /> </LinearLayout> 

List_selector xml

 <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#ff0000" > </ripple> 

Y fila de vista de lista xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:gravity="center_vertical" android:orientation="horizontal" tools:ignore="UseCompoundDrawables" > <ImageView android:id="@+id/list_image" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/list_title" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 

Lo que espero ver es cuando selecciono un elemento, el elemento se selecciona con una ondulación de color como # ff0000. Sin embargo, esto es lo que acabo viendo:

Introduzca aquí la descripción de la imagen

Lo que estoy esperando es algo cerca de este comportamiento – pero confinado dentro de la fila de la lista seleccionada! ¿Qué estoy haciendo mal?

Gracias, Zach

Está utilizando una ondulación sin límites, por ejemplo, una ondulación sin capa de contenido o máscara, por lo que la ondulación se proyecta sobre el fondo de su ListView padre. Debe establecer una capa de máscara para restringir los límites de ondulación.

Res / drawable / my_list_selector.xml:

 <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?attr/colorControlHighlight"> <item android:id="@android:id/mask"> <color android:color="@color/white" /> </item> </ripple> 
  • ¿Cómo puedo agregar espacio en blanco al final de un ListView?
  • ¿Es posible establecer listView maxHeight en xml?
  • Android menuitem valor de retorno del manejador de onclick
  • Scroller no muestra el resto del contenido listView
  • Deslizar para eliminar listitem
  • ¿Puedo crear Fragment ListActivity con el paquete de compatibilidad v4?
  • Rellenar el color de la fila de vista de lista con un cierto porcentaje
  • Sincronizar todo el ListView en un ViewPager
  • Android L: Desplazamiento rápido para el RecyclerView
  • ListView de búsqueda múltiple
  • Cómo agregar datos a BaseAdapter personalizado para listView - Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.