ListView dentro de un ScrollView

Posible duplicado:
Listview dentro de ScrollView no se desplaza en Android

Tengo un ListView dentro de ScrollView y el problema es que el ScrollView está moviendo pero ListView no se desplaza. Creo que esto está sucediendo debido a que ScrollView . ¿Alguien tiene una solución para este problema?

ListView tiene capacidades de desplazamiento integradas. Encapsularlo en cualquier otro diseño como un LinearLayout o RelativeLayout .

Necesito tener un listview dentro de una vista de desplazamiento para evitar que la pantalla entera sea extremadamente larga. Esto permite que usted tenga que fijar el número de artículos exhibidos en la lista, mientras que el resto será desplazado.

Yo uso la siguiente clase en mi aplicación y hasta ahora parece funcionar fenomenal.

  public class NestedListView extends ListView implements OnScrollListener, OnTouchListener { private int listViewTouchAction; private static final int MAXIMUM_LIST_ITEMS_VIEWABLE = 4; @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (getAdapter() != null && getAdapter().getCount() > MAXIMUM_LIST_ITEMS_VIEWABLE) { if (listViewTouchAction == MotionEvent.ACTION_MOVE) { scrollBy(0, -1); } } } public NestedListView(Context context, AttributeSet attrs) { super(context, attrs); listViewTouchAction = -1; setOnScrollListener(this); setOnTouchListener(this); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int newHeight = 0; final int heightMode = MeasureSpec.getMode(heightMeasureSpec); int heightSize = MeasureSpec.getSize(heightMeasureSpec); if (heightMode != MeasureSpec.EXACTLY) { ListAdapter listAdapter = getAdapter(); if (listAdapter != null && !listAdapter.isEmpty()) { int listPosition = 0; for (listPosition = 0; listPosition < listAdapter.getCount() && listPosition < MAXIMUM_LIST_ITEMS_VIEWABLE; listPosition++) { View listItem = listAdapter.getView(listPosition, null, this); listItem.measure(widthMeasureSpec, heightMeasureSpec); newHeight += listItem.getMeasuredHeight(); } newHeight += getDividerHeight() * listPosition; } if ((heightMode == MeasureSpec.AT_MOST) && (newHeight > heightSize)) { if (newHeight > heightSize) { newHeight = heightSize; } } } else { newHeight = getMeasuredHeight(); } setMeasuredDimension(getMeasuredWidth(), newHeight); } @Override public boolean onTouch(View v, MotionEvent event) { listViewTouchAction = event.getAction(); if (getAdapter() != null && getAdapter().getCount() > MAXIMUM_LIST_ITEMS_VIEWABLE) { if (listViewTouchAction == MotionEvent.ACTION_MOVE) { scrollBy(0, 1); } } return false; } } 

¡Usa el siguiente método y disfruta!

  private void setListViewScrollable(final ListView list) { list.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { listViewTouchAction = event.getAction(); if (listViewTouchAction == MotionEvent.ACTION_MOVE) { list.scrollBy(0, 1); } return false; } }); list.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (listViewTouchAction == MotionEvent.ACTION_MOVE) { list.scrollBy(0, -1); } } }); } 

ListViewTouchAction es un valor entero global. Si puede reemplazar la línea

 list.scrollBy(0, 1); 

Con otra cosa por favor comparta con nosotros.

No debe anidar un ListView dentro de ScrollView.

Si está intentando desplazar algunas otras vistas junto con ListView, puede consultar esta respuesta .

  • Android: Dibujo sobre lienzo en Scrollview
  • ViewPager en un Layout detrás de un ScrollView sin escuchar gestos
  • Android ScrollView layout (wrap_content, tamaño máximo)
  • distinguir un golpe y hacer clic en android (pasar el evento a otra vista si es un golpe)
  • Android: Altura total de ScrollView
  • Android paddingBottom no funciona sin paddingTop
  • Habilitar scroll intertial en NestedScrollView (Android Studio)
  • Espacios en blanco usando la vista web de android dentro de scrollview con una red móvil de jQuery
  • Desplazamiento de TextView en una ScrollView a una subcadena de texto específica
  • ¿Cómo deshabilitar un scrollView?
  • Android View.OnKeyListener: haga clic una vez, ejecute dos veces
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.