ScrollView con un ListView no se desplaza – android
Mi problema con el diseño siguiente es que el diseño no se desplaza. Mi requisito es que tengo que mostrar 2 listas que a veces pueden ser grandes. Así que poner los ListViews dentro de un ScrollView para que pueda desplazarse a la parte inferior y echar un vistazo a los ListViews. I don't want the ListView to scroll
. Sólo quiero que mi ScrollView se comporte como debería. ¿¿Alguna sugerencia??
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ScrollView android:id="@+id/scrollViewContactDetails" android:layout_width="match_parent" android:layout_height="fill_parent" android:fillViewport="true"> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/name" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="5dp" android:textAppearance="?android:attr/textAppearanceLarge" android:textSize="22dp" /> <LinearLayout android:id="@+id/numbersLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:orientation="vertical" android:weightSum="1" > <LinearLayout android:id="@+id/numbersLayoutList" android:layout_width="match_parent" android:layout_height="fill_parent" android:gravity="center" android:orientation="vertical" android:weightSum="1" > <ListView android:id="@+id/numbersList" android:layout_width="match_parent" android:layout_height="fill_parent" android:layout_gravity="center" android:dividerHeight="2dp" > </ListView> </LinearLayout> </LinearLayout> <LinearLayout android:id="@+id/emailLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_marginTop="10dp" android:orientation="horizontal" android:weightSum="1" > <LinearLayout android:layout_width="120dp" android:layout_height="match_parent" android:layout_gravity="right|center" android:gravity="top|right" android:orientation="vertical" > <TextView android:id="@+id/emailId" android:layout_width="120dp" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:gravity="right|center" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#8d8d8d" android:textSize="18dp" /> </LinearLayout> <LinearLayout android:id="@+id/emailLayoutList" android:layout_width="match_parent" android:layout_height="fill_parent" android:layout_marginLeft="20dp" android:gravity="center" android:orientation="vertical" android:weightSum="1" > <ListView android:id="@+id/emailList" android:layout_width="match_parent" android:layout_height="fill_parent" android:layout_gravity="center" android:layout_weight="1" android:dividerHeight="2dp" > </ListView> </LinearLayout> </LinearLayout> </LinearLayout> </ScrollView> </LinearLayout>
- ¿Cómo hacer que la barra de herramientas aparezca en la vista o fuera de la vista cuando se utiliza Google Design Library?
- Android: el diseño de ListView xml no muestra la imagen de fondo cuando se desplaza
- Cómo implementar barra de acción deslizante vertical (como en la aplicación grofers)
- Desplazamiento automático de AdapterView (Listview, GridView, ...)
- Desplazamiento / zoom de una escena en OpenGL y subdivisión
- Android y la velocidad de desplazamiento de la marquesina horizontal de TextView
- Desplazamiento de un HorizontalScrollView haciendo clic en los botones en sus lados
- ¿Qué hace android: isScrollContainer hacer?
- Desplazar la vista web horizontalmente dentro de un ViewPager
- Personalizar RecyclerView LayoutManager no fling (sin problemas)
- ¿Cómo desplazar un HorizontalScrollView en el botón de clic en android?
- La imagen de desplazamiento de la galería salta después de mover 3/4 de la pantalla
- Cómo obtener el desplazamiento de una vista dentro de un ScrollView?
Pasé días tratando de averiguar cómo lograr esto y no pude encontrar ninguna solución. You should not put a ListView inside a ScrollView
era el refrán común por todas partes que buscado. No quería usar LinearLayout o ViewGroup porque ya había creado toda la interfaz de usuario usando ListView y me pareció impresionante para mí y para todos los demás. Funcionó bien excepto que la página no se desplazó.
Recientemente tropecé con una pregunta aquí y pensé dar esta respuesta una prueba. ¡Funciona perfectamente!
Aquí está la solución:
public class Utility { public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { // pre-condition return; } int totalHeight = 0; for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); } }
Simplemente llame a Utility.setListViewHeightBasedOnChildren(yourListView)
después de haber asignado el adaptador a su listview y ya está!
Un gran agradecimiento a DougW
para llegar a la respuesta. Aquí está el enlace original ¿Cómo puedo poner un ListView en un ScrollView sin colapsar?
No deberías poner listview en scrollview, no es una buena idea. Si no desea que se desplace, quizás no debería usar listviews. ¿Has probado con LinearLayouts?
En lugar de poner dos listview, puede utilizar una lista y puede agregar ambos datos o inflar ambos archivos xml en el adaptador de ese listview. Esto mostrará los datos en una lista y desplazará los datos con una barra de desplazamiento.
Prueba de esta manera:
Has eliminado la vista de desplazamiento de tu diseño porque no funciona correctamente para la vista de lista.
Y también pones la altura "android:layout_height="fill_parent"
para listview de modo que ocupe la altura completa de la disposición de los padres.
así que por favor corrija algo de altura manualmente para ambos listview.
- Android – getTabHost () no está definido
- SQLiteException: Token no reconocido al leer de la base de datos