Android ListView relleno de contenido sin mover ListView altura?

Tengo un ListView con un montón de elementos dentro de él. ¿Cómo puedo hacer que los elementos superior e inferior tengan un margen superior de 10dp para el elemento superior y el margen inferior de 10dp para el elemento inferior? Ahora puedo hacer esto con el relleno o el margen en el ListView pero el resultado es que cuando usted rueda el borde del ListView es ahora 10dp de la parte inferior de la pantalla. De todos modos alrededor de esto? También he intentado fijar los márgenes dentro del método getView de mi adaptador pero no veo ninguna opción del margen para AbsListView.LayoutParams. Cualquier ayuda sería grande.

Gracias

El truco es incluir android:clipToPadding="false" en la definición de la vista, por ejemplo:

 <ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingTop="16dip" android:paddingBottom="16dip" android:clipToPadding="false" /> 

Puede obtener espacio en la parte superior e inferior de su ListView, dentro de la región de desplazamiento, utilizando encabezados y pies de página. He aquí un ejemplo rápido:

Defina la vista de relleno, que denominé header_footer.xml:

 <?xml version="1.0" encoding="utf-8"?> <View xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="10dp"/> 

Ahora su método onCreate se parece a esto, suponiendo que ha nombrado ListView listView :

  final LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); final View headerFooter = inflater.inflate(R.layout.header_footer, null); listView.addFooterView(headerFooter); listView.addHeaderView(headerFooter); 

Y luego configure su adaptador.

¿Por qué no sólo comprobar la posición del elemento en relación con el tamaño de su lista:

Relleno:

  public View getView(int position, View convertView, ViewGroup parent) { //recycle views and whatever else you normally would do goes here.. //... //... if (position == 0){ convertView.setPadding(0, 10, 0, 0); //padding on top for top item } else if (position == getCount() - 1){ convertView.setPadding(0, 0, 0, 10); //padding on bottom for bottom item } else{ convertView.setPadding(0, 0, 0, 0); //no padding } } 

Para el uso de márgenes

 LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); lp.setMargins(left, top, right, bottom); convertView.setLayoutParams(lp); 

Ex:

 public View getView(int position, View convertView, ViewGroup parent) { //recycle views and whatever else you normally would do goes here.. //... //... LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); if (position == 0){ lp.setMargins(0, 10, 0, 0); //margin on top for top item } else if (position == getCount() - 1){ lp.setMargins(0, 10, 0, 10); //margin on bottom for bottom item } else{ lp.setMargins(0, 0, 0, 0); //no margin } convertView.setLayoutParams(lp); } 

Esto es siempre que haya implementado el método getCount () correctamente para su adaptador.

  • Android cómo mantener la biblioteca nativa cuando la aplicación se detuvo
  • Android: ¿Cómo evitar que la imagen sea escalada en ImageView o ImageButton?
  • Establezca BaseActivity con un constructor personalizado para suministrar datos de la clase secundaria
  • ViewPager no muestra nada
  • Android: "Fin de secuencia inesperada" excepción descargar archivos grandes
  • Intentando ejecutar un proyecto de Android en IntelliJ: Error: Terminación del proceso de compilación anormal: Error: Esta instancia de Java no admite una JVM de 32 bits.
  • Búsqueda asistida por Android: El botón de búsqueda no invoca la actividad que se puede buscar (Otras soluciones no ayudaron)
  • ¿Es posible escribir un viejo programa llano java que funciona en androide?
  • La vista personalizada de Android vuelve a la posición original al actualizar
  • IllegalArgumentException Surface.nativeLockCanvas, Choreographer, BufferQueue
  • Android Share Intent formato de archivo no compatible
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.