ListView: selectores dibujables dibujados en diferentes tamaños

Estoy usando un selector ListView personalizado. Todo funciona bien, excepto que los drawables para state_focused y state_pressed se dibujan más grande que el estado normal.

En lugar de la implementación predeterminada, que utiliza mapas de bits de 9 parches, estoy usando ShapeDrawables. Todos ellos usan los mismos valores de relleno (ver más abajo) Parece que están sobrescritos por otros valores. Probablemente un tema? No lo encontré.

Vista de la lista

<ListView style="@style/dark_bg_style" android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="10dp" android:layout_centerInParent="true" android:drawSelectorOnTop="false" android:cacheColorHint="#00000000" android:layoutAnimation="@anim/list_layout_in" android:scrollbars="none" android:divider="#00000000" android:dividerHeight="5dp" android:listSelector="@drawable/list_sel" /> 

List_sel.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@android:color/transparent" android:state_window_focused="false"/> <item android:drawable="@drawable/button_bg_pressed" android:state_pressed="true"/> <item android:drawable="@drawable/button_bg_focused" android:state_focused="true" android:state_selected="true"/> <item android:drawable="@drawable/button_bg_focused" android:state_focused="true"/> </selector> 

Extracto del diseño del elemento de lista

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/menu_sel" > ... 

Menu_sel.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@android:color/transparent" android:state_focused="true" android:state_selected="true"/> <item android:drawable="@android:color/transparent" android:state_selected="true"/> <item android:drawable="@android:color/transparent" android:state_pressed="true"/> <item android:drawable="@drawable/button_bg_normal"/> </selector> 

Button_bg_normal.xml

 <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#44C8C8C8" /> <corners android:radius="5sp" /> <padding android:left="10dip" android:top="5dip" android:right="10dip" android:bottom="5dip" /> </shape> 

Button_bg_pressed.xml

 <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#77C8C8C8" /> <corners android:radius="5sp" /> <padding android:left="10dip" android:top="5dip" android:right="10dip" android:bottom="5dip" /> </shape> 

Button_bg_focused.xml

 <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#44C8C8C8" /> <corners android:radius="5sp" /> <stroke android:color="#55FFFFFF" android:width="1dip" /> <padding android:left="10dip" android:top="5dip" android:right="10dip" android:bottom="5dip" /> </shape> 

Cuando se trabaja con ListView s, es mejor establecer los estados de fondo como el android:listSelector . En su código, hay una contienda entre los estados en android:listSelector y el android:background especificado para la fila individual.

  • Necesita hacer la vista de lista en el centro verticalmente para Disposición de cajones en Android
  • Establecer la altura de ListView de forma dinámica en función de la vista de texto multilínea dentro de ella
  • Cómo hacer que el encabezado o pie de página de un ListView no se puede hacer clic
  • ¿Cómo leer un DB de SQLite en android con un cursorloader?
  • Ocultar entrada suave cuando se desplaza la lista
  • ¿Es posible agregar un TextView desplazable a un ListView?
  • La vista de pie de página para ListView no se muestra en 1 dispositivo, pero está en otro?
  • Vaciar ListView dentro de ScrollView como dos Fragmentos
  • Paginación de ListView en android
  • Listview duplica el elemento cada 6 veces
  • Cómo obtener actividad en blanco no con información de producto existente mientras hace clic en la fila de elementos de lista en CartActivity
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.