¿Cómo cambiar la altura de ListView de forma dinámica en Android?

Necesito cambiar la altura de un ListView dinámicamente en mi aplicación.

¿Hay alguna forma de hacer eso?

Para cambiar la altura y el ancho dinámicamente, intente esto

RelativeLayout.LayoutParams mParam = new RelativeLayout.LayoutParams((int)(width),(int)(height); listView.setLayoutParams(mParam); 

También puede usar LayoutParams.FILL_PARENT o LayoutParams.WRAP_CONTENT en lugar de height & width

Este pedazo de código me ayudó a alcanzar la altura dinámica del listview.

 import android.view.View; import android.view.ViewGroup; import android.view.View.MeasureSpec; import android.widget.ListAdapter; import android.widget.ListView; public class Utility { 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(); } } 

En la actividad principal, utilice esta clase de utilidad para cambiar la altura de la vista de lista.

  phraseListView=(ListView)findViewById(R.id.phrase_listview); phraseAdapter=new PhraseListAdapter(this); phraseListView.setAdapter(phraseAdapter); Utility.setListViewHeightBasedOnChildren(phraseListView); 

Tomado de aquí

Puede utilizar el método siguiente para establecer la altura de listview de forma programática según sus elementos:

 <ListView android:id="@+id/lvMenu" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffffff" /> 

Método utilizado para establecer la altura de listview:

 public static boolean setListViewHeightBasedOnItems(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter != null) { int numberOfItems = listAdapter.getCount(); // Get total height of all items. int totalItemsHeight = 0; for (int itemPos = 0; itemPos < numberOfItems; itemPos++) { View item = listAdapter.getView(itemPos, null, listView); float px = 500 * (listView.getResources().getDisplayMetrics().density); item.measure(View.MeasureSpec.makeMeasureSpec((int)px, View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); totalItemsHeight += item.getMeasuredHeight(); } // Get total height of all item dividers. int totalDividersHeight = listView.getDividerHeight() * (numberOfItems - 1); // Get padding int totalPadding = listView.getPaddingTop() + listView.getPaddingBottom(); // Set list height. ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalItemsHeight + totalDividersHeight + totalPadding; listView.setLayoutParams(params); listView.requestLayout(); return true; } else { return false; } } 

A continuación, establezca como abajo código:

 MenuAdapter menuAdapter = new MenuAdapter(context, R.layout.menu_item); lvMenu.setAdapter(menuAdapter); setListViewHeightBasedOnItems(lvMenu); 

Espero que te ayude.

Use listview personalizado y dé la altura como wrap_content.

  • Encabezados ListView de Android
  • Layout_width de un ListView
  • BaseAdapter que hace que ListView salga de orden cuando se desplaza
  • Personalización de los colores de Android ListView?
  • Android Colores alternativos en ListView
  • Android ListView desplazamiento hacia arriba
  • ¿Cómo obtener la vista de un elemento ListView?
  • Android: deshabilitar la selección de ListView Resaltar pero mantener OnClick habilitado
  • Cómo añadir un botón debajo de un listview en android
  • Android dos listview verticalmente utilizando 50% -50% de la altura de la pantalla
  • Cómo personalizar listview row android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.