Vedo uno strano comportamento con il mio ListView, che non riesco a capire.Altezza dinamica per riga ListView in Android
Ho un ListView, che è popolato con alcuni dati. Ogni riga contiene un'immagine e tre etichette di testo. Ecco la mia XML per la fila (sto gonfiando nel metodo dell'adattatore 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>
Ora, tutto ciò che entra nei campi di testo può essere di qualsiasi lunghezza (da pochi caratteri a 80-100 caratteri) e voglio che le etichette si avvolgano appena e l'altezza della riga si espanda per adattarsi all'altezza delle etichette avvolte.
Tuttavia, le etichette si avvolgono correttamente, ma l'altezza della riga non si espande, pertanto la parte inferiore delle etichette viene tagliata. Ecco il mio metodo 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;
}
Come posso avere le righe per essere di diversa altezza, regolata automaticamente per adattarsi tutti i contenuti?
Modo migliore utilizzare Android: maxLines = 1 in Textview in Layout di riga suo Prevenire più di un testo di riga –
Hai provato adujusting Android: layout_weight a 1 o qualcosa del genere? –
@Samir: Voglio l'esatto contrario: le etichette DEVONO avvolgere, poiché ho bisogno che tutto il testo sia visibile. –