Altura dinámica para la fila ListView en android

Estoy viendo un comportamiento extraño con mi ListView, que me parece que no puede moverse.

Tengo un ListView, que se rellena con algunos datos. Cada fila contiene una imagen y tres etiquetas de texto. Aquí está mi XML para la fila (estoy inflando en el método getView del adaptador):

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:paddingTop="0dip" android:paddingBottom="0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:id="@+id/Icon" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="2" android:padding="2dp" android:scaleType="fitCenter" android:contentDescription="@string/app_icon"/> <TextView android:id="@+id/TxtName" android:scrollHorizontally="false" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor="@android:color/black" android:background="@color/list_bg1" android:layout_weight="2" android:padding="2dp"/> <TextView android:id="@+id/TxtPackage" android:scrollHorizontally="false" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="2" android:textColor="@android:color/black" android:background="@color/list_bg2" android:padding="2dp"/> <TextView android:id="@+id/TxtSource" android:scrollHorizontally="false" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="2" android:background="@color/list_bg3" android:textColor="@android:color/black" android:padding="2dp"/> </LinearLayout> 

Ahora, lo que entra en los campos de texto puede ser de cualquier longitud (de unos pocos caracteres a 80-100 caracteres) y quiero que las etiquetas sólo se envuelvan y la altura de la fila se expanda para acomodar la altura de las etiquetas envueltas.

Sin embargo, las etiquetas se ajustan bien, pero la altura de la fila no se expande, por lo tanto, la parte inferior de las etiquetas se corta. Aquí está mi método getView :

 @Override public View getView(int position, View convertView, ViewGroup parent) { SetInfo app = (SetInfo)getItem(position); if(app == null) return null; LinearLayout row = (LinearLayout) (convertView == null ? LayoutInflater.from(context).inflate(R.layout.listitem, parent, false) : convertView); ((TextView)row.findViewById(R.id.TxtName)).setText(app.getName()); ((TextView)row.findViewById(R.id.TxtPackage)).setText(app.getPackage()); ((TextView)row.findViewById(R.id.TxtSource)).setText(app.getSource()); if(app.getIcon() != null) ((ImageView)row.findViewById(R.id.Icon)).setImageDrawable(app.getIcon()); return row; } 

¿Cómo puedo tener las filas para ser de diferentes alturas, ajustado automáticamente para adaptarse a todo el contenido?

Intente cambiar sus TextViews para tener android: layout_height = "wrap_content".

Tuve el problema sam y la respuesta de @ maebe no funcionó para mí. Para conseguir que funcione, tuve que llamar requestLayout () en mi TextView en getView del adaptador.

Por lo tanto, en su caso, tendría que llamar a requestLayout () para cada TextView:

 @Override public View getView(int position, View convertView, ViewGroup parent) { // Inflate your view etc. row.findViewById(R.id.TxtName).requestLayout(); row.findViewById(R.id.TxtPackage).requestLayout(); row.findViewById(R.id.TxtSource).requestLayout(); return row; } 

He intentado todo tipo de trucos y este es el único que funcionó en mi caso.

  • Cómo añadir una sugerencia de texto a Android SwipeRefreshLayout
  • TouchDelegate aplicado a ListView sólo responde al evento de clic
  • EditText pierde contenido en desplazamiento en ListView
  • El clic de listitem personalizado no activa listview.onclicklistener
  • Android.content.res.Resources $ NotFoundException: Cadena de recursos ID # 0x0
  • Cómo desencadenar onListItemClick en un ListFragment
  • Android no puede encontrar el método desde el botón onClick en ListView Row
  • ¿Cómo puedo cambiar el color de un elemento de vista de lista en Delphi (Firemonkey Android)
  • Agregue varios textViews (de anchos variables) en relativeLayout uno tras otro
  • Android - Slide ListView con setX, setPadding o animación de interpolación?
  • ¿Cómo puedo agregar datos que he introducido en un cuadro de EditText en una matriz para enumerar en otra actividad?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.