java - móviles - manual de programacion android pdf
Android ListView relleno para el contenido sin mover altura ListView? (3)
Tengo un ListView con un montón de elementos dentro de él. ¿Cómo puedo hacer que los elementos superiores e inferiores tengan un margen superior de 10 pb para el ítem superior y un margen inferior de 10 pb para el ítem inferior? Ahora puedo hacer esto con relleno o margen en el ListView, pero el resultado es que cuando se desplaza por el borde del ListView ahora está a 10dp desde la parte inferior de la pantalla. De todos modos alrededor de esto? También he intentado establecer márgenes dentro del método getView de mi adaptador, pero no veo ninguna opción de margen para AbsListView.LayoutParams. Cualquier ayuda sería genial.
Gracias
¿Por qué no solo verifica la posición del artículo en relación con el tamaño de tu 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 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 se proporciona siempre que haya implementado el método getCount () correctamente para su adaptador.
El truco es incluir android:clipToPadding="false"
en la definición de su 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, mediante el uso de encabezados y pies de página. Aquí hay un ejemplo rápido:
Defina su 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 ve así, suponiendo que haya nombrado su 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 configura tu adaptador.