Diseño de filas ListView de Android ignorando el relleno

Estoy seguro de que esto es algo simple que estoy pasando por alto, pero no puedo entenderlo. Tengo un ListView que usa un adaptador de encargo con una disposición simple y mi valor del acolchado parece ser ignorado. Así es como quiero que el diseño sea:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/Widget.Layout.ComponentEntry" android:padding="@dimen/preferred_padding"> <include layout="@layout/component_entry_summary" /> </LinearLayout> 

Pero el relleno es ignorado. Si utilizo un LinearLayout anidado entonces trabaja pero el LinearLayout interno parece inútil. Esto funciona:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/Widget.Layout.ComponentEntry"> <LinearLayout android:layout_height="match_parent" android:layout_width="match_parent" android:padding="@dimen/preferred_padding"> <include layout="@layout/component_entry_summary" /> </LinearLayout> </LinearLayout> 

El primer diseño funciona fuera de un ListView, así que estoy perplejo. Para referencia aquí es el estilo utilizado (que también especifica un relleno):

 <style name="Widget"> <item name="android:textAppearance">@style/TextAppearance</item> </style> <style name="Widget.Layout"> <!-- Empty Style --> </style> <style name="Widget.Layout.ListViewItem"> <item name="android:background">@drawable/listview_item_background</item> <item name="android:layout_height">wrap_content</item> <item name="android:layout_width">match_parent</item> <item name="android:padding">@dimen/preferred_padding</item> </style> <style name="Widget.Layout.ComponentEntry" parent="Widget.Layout.ListViewItem"> <item name="android:layout_height">@dimen/listview_item_height</item> </style> 

Y el diseño incluido:

 <merge xmlns:android="http://schemas.android.com/apk/res/android" > <ImageView android:id="@+id/iconImage" android:layout_gravity="center_vertical" android:layout_height="@dimen/icon_size" android:layout_width="@dimen/icon_size" android:scaleType="fitCenter" android:src="@drawable/ic_launcher" /> <LinearLayout android:layout_gravity="center_vertical" android:layout_height="wrap_content" android:layout_width="0dp" android:layout_weight="1" android:paddingLeft="@dimen/preferred_padding" android:orientation="vertical"> <TextView android:id="@+id/topText" android:layout_height="wrap_content" android:layout_width="wrap_content" android:paddingLeft="@dimen/preferred_padding" android:singleLine="true" android:text="@string/app_name" android:textColor="@color/header_text_enabled" android:textStyle="bold" /> <TextView android:id="@+id/bottomText" android:layout_height="wrap_content" android:layout_width="wrap_content" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:paddingLeft="@dimen/preferred_padding" android:singleLine="true" android:text="@string/app_name" android:textColor="@color/header_text_enabled" /> </LinearLayout> </merge> 

Aquí está cómo la disposición se infla (yo estaba originalmente proporcionando a un padre nulo y pensé que era el problema pero no parece ser:

 public View getView(int position, View view, ViewGroup parent) { ViewHolder viewHolder; if (view == null) { view = _layoutInflater.inflate(_layoutResourceId, parent, false); ... 

Me encontré con lo mismo con el problema, cuando se quitó el código para establecer el fondo del relleno trabajado.

Editar: Se enteró de lo que está causando, es la línea de relleno en las imágenes de 9 parches, pensé que si lo dejó fuera del dibujo que utilizaría el relleno en el xml de diseño. Pero en realidad, a continuación, utiliza el área extensible también como el área de dibujo.

Si las líneas de relleno no están incluidas, Android utiliza las líneas izquierda y superior para definir este área dibujable, definiendo efectivamente el relleno.

http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

La eliminación del fondo causó que el relleno en el LinearLayout externo comenzara a funcionar. No han cavado en por qué todavía, pero el problema es (parcialmente) resuelto por lo menos.

  • Buen diseño de la interfaz de usuario: ¿Cómo manejar ListView vacío?
  • Transición de la actividad de Android en un ListView
  • Establecer OnClickListener para elementos en ListView con 2 vistas
  • Cómo restablecer listview después de searchview se cierra en android?
  • ¿Cómo puedo ajustar un número exacto de elementos ListView en la pantalla?
  • Cómo ajustar la altura de ListView cuando hay ExpandableListView incrustado en ListView
  • Extender el ejemplo de AbsListView
  • Implementación de reproductor de audio en listview en android
  • ViewPager dentro de ListView
  • ListView haga clic para mostrar la imagen en ImageView
  • Establecer un color de fondo en un elemento ListView seleccionado en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.