Listview la misma altura que el contenido

He utilizado listview personalizado. El contenido viene de dinámico Quiero a la misma altura de vista de lista igual que el contenido.

He utilizado wrap_content pero esto no ayuda Si elimino scrollview entonces su trabajo

Código. "El desplazamiento vertical ScrollView no debe contener otro widget de desplazamiento vertical (ListView)"

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/background_img" android:scrollbars="none" > <LinearLayout android:layout_width="match_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/lstsemtrack" android:layout_width="fill_parent" android:layout_height="wrap_content" android:divider="#f2e4e4" android:dividerHeight="1dip" > </ListView> 

Lista de articulos

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="10dip" android:scrollbars="none" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="4" > <TextView android:id="@+id/txtBiology" style="@style/sem_rowtext" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginRight="5dip" android:layout_weight="1" android:text="Biology" /> <TextView android:id="@+id/txtClass" style="@style/sem_rowtext" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:text="Biology - 101" /> <TextView android:id="@+id/txtGrade" style="@style/sem_rowtext" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:text="Grade" /> <TextView android:id="@+id/txtGrade" style="@style/sem_rowtext" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:text="Remove" /> </LinearLayout> </LinearLayout> 

Salida como abajo quiero igual que el contenido no scrollview

Introduzca aquí la descripción de la imagen

Utilice este código

 public class MyListView extends ListView { public MyListView (Context context, AttributeSet attrs) { super(context, attrs); } public MyListView (Context context) { super(context); } public MyListView (Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } } 

No debería poner un ListView dentro de ScrollView porque ListView es un grupo de vistas que muestra una lista de elementos desplazables. Si lo usa dentro de scrollview no recibirá eventos de desplazamiento porque todos ellos son manejados por el ScrollView padre. El uso de un ListView para que no sea scroll es extremadamente caro y va en contra de todo el propósito de ListView. Usted NO debe hacer esto. Simplemente utilice un LinearLayout en su lugar.

Sin embargo, si realmente quieres hacer esto puedes echar un vistazo a esto: ¿Cómo puedo poner un ListView en un ScrollView sin colapsar?

En el diseño padre, establezca la altura en wrap_content . Esto debería funcionar.

Otras sugerencias no funcionarán, ya que no hay forma de determinar la altura del contenido del ListView hasta que se dibuje en la pantalla (a menos que tenga una altura fija, a continuación, utilice eso como la altura de ListView).

Lo que puedes hacer es establecer la altura de ListView después de dibujar los elementos dentro de él. Puede hacerlo en onWindowFocusChanged en su actividad. Como ejemplo:

 public void onWindowFocusChanged(boolean hasFocus) { // get content height int contentHeight = listView.getChildAt(0).getHeight(); // set listview height LayoutParams lp = listView.getLayoutParams(); lp.height = contentHeight; listView.setLayoutParams(lp); } 

Usar android: layout_height = "match_parent", funcionará creo.

Intente encajar la vista de lista con un LinearLayout y establezca la altura de LinearLayout en wrap_content.

Utilizar Own ListView personalizado
Cree una clase CustomListView.java y extienda ListView así.

 public class CustomListView extends ListView { private android.view.ViewGroup.LayoutParams params; private int prevCount = 0; public CustomListView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { if (getCount() != prevCount) { int height = getChildAt(0).getHeight() + 1 ; prevCount = getCount(); params = getLayoutParams(); params.height = getCount() * height; setLayoutParams(params); } super.onDraw(canvas); } } 

Luego usarlo en xml

  <yourPackageName.CustomListView android:id="@+id/lstsemtrack" android:layout_width="fill_parent" android:layout_height="wrap_content" android:divider="#f2e4e4" android:dividerHeight="1dip"> </yourPackageName.ListView> 
  • Cambiar el diseño del elemento de lista seleccionado en Android
  • Listview en el lado de rleft y tabhost en el lado derecho con la proporción de 20:80 compartir pantalla
  • Cambio de fondo del elemento de vista de lista de Android
  • ListView con los botones y la matriz estática de la secuencia
  • ListView elemento de animación de desplazamiento ("UIKit Dynamics" -como)
  • Imágenes de carga lenta en ListView en Android
  • Android-notifyDataSetChanged no funciona en BaseAdapter
  • Lotes de GC cuando se desplaza ListView (con el patrón de titular)
  • ¿Cómo crear un spinner con título en él?
  • Ajustar el ajuste de la panorámica no parece funcionar en JellyBean 4.2.2-4.1.2
  • Menú contextual de un ListFragment
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.