Debe establecer el alto de la vista de lista en un valor de corrección. si su contenido es dinámicamente hay una función agradable para medir la listsize real después de restablecer el adaptador:
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}
int totalHeight = 0;
int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST);
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}
usted tiene que llamar a este método estático con su vista de lista como parametro después de configurar su adaptador. Ahora puede agregar una vista de desplazamiento (dentro está su vista de lista y otras vistas). Diría que este comportamiento en 2.3.3 un anterior es un pequeño error ... no hay una manera fácil de incluir la vista de lista dentro de una vista de desplazamiento excepto la forma que describí. Por esa razón introdujeron el modo OVERSCROLL_NEVER :)
El código es de DougW!
Brillante !!! Esto realmente me ahorró muchas molestias. ¿Cómo se sabe qué nombre de método buscar, la API S2 es pública? – npace