Estoy viendo un comportamiento extraño con mi ListView, que parece que no puedo moverme.Altura dinámica para la fila ListView en android
Tengo un ListView, que se completa con algunos datos. Cada fila contiene una imagen y tres etiquetas de texto. Aquí está mi XML para la fila (estoy inflarlo en el método del adaptador getView
):
<?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 pueden ser de cualquier longitud (desde unos pocos caracteres de 80-100 caracteres) y quiero que las etiquetas se envuelvan y la altura de la fila se expanda para acomodar la altura de las etiquetas envueltas.
Sin embargo, las etiquetas se envuelven correctamente, pero la altura de la fila no se expande, por lo tanto, la parte inferior de las etiquetas se corta. Aquí está mi getView
método:
@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 a ser de diferente altura, ajusta automáticamente para adaptarse a todos los contenidos?
Mejor forma de usar android: maxLines = 1 en Textview en Diseño de fila es Impedir más de una línea de texto –
¿Ha intentado adujusting android: layout_weight a 1 o algo así? –
@Samir: Quiero exactamente lo contrario: las etiquetas DEBEN envolver, ya que necesito que todo el texto esté visible. –