2011-05-24 2 views
0

J'ai un ListView qui ressemble à ceci: enter image description hereComment puis-je afficher une hauteur TextView longue dans une ligne ListView?

Remarquez comment la TextView se couper avec des ellipses. Comment puis-je m'assurer que tout le TextView est visible à l'intérieur de ListView?

Voici mon XML pour la ligne (la textview est appelée bodyTextView):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="horizontal" 
     android:padding="4px"> 
     <ImageView android:id="@+id/avatarImageView" 
      android:layout_width="48px" 
      android:layout_height="48px"/> 
     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:paddingLeft="4px"> 
      <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:layout_weight="1" 
      android:gravity="center_vertical"> 
       <TextView android:id="@+id/usernameTextView" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:gravity="left" 
       android:textStyle="bold" 
        android:singleLine="true" 
        android:ellipsize="end" 
        android:textColor="#444444" 
        android:padding="0px"/> 

       <TextView android:id="@+id/bodyTextView" 
       android:orientation="vertical" 
       android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:singleLine="false" 
        android:textColor="#666666" 
        android:maxLines="5" 
        android:ellipsize="end"/> 
      <TextView android:id="@+id/dateTextView" 
       android:orientation="vertical" 
       android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:singleLine="true"/> 
      </LinearLayout> 
     </LinearLayout> 
    </LinearLayout> 

Répondre

1

Set ellipsize = "none". Veillez également à spécifier maxLines assez grand.

0

En fait, ellipsize = "none" n'affectera pas la largeur de l'élément. Pour qu'un élément affiche son contenu complet dans un LinearLayout, vous devez définir layout_width ou layout_height (selon le cas) sur "wrap_content", puis vérifier que les autres éléments du LinearLayout n'occupent pas l'espace premier. Même avec cette option, un TextLine singleLine restera elliptique une fois qu'il remplira la largeur de la mise en page environnante, bien sûr.

Comment vous assurez-vous que les autres éléments jouent bien? Assurez-vous qu'ils ne sont pas également défini sur une option fill_ * ou wrap_content. Un moyen facile d'afficher plusieurs TextView avec un qui prend tout l'espace dont il a besoin et les autres qui jouent bien est le suivant: Définir le primaire à un layout_width de "wrap_content" avec un layout_weight de "0" (c'est le poids par défaut, ne pas avoir besoin de le définir), puis définissez les autres à un layout_width de "0dip" avec un layout_weight de "1". Cela donnera le TextView primaire à la mise en page avec une largeur définie correspondant au contenu, et les autres TextViews avec une largeur effective de zéro. La mise en page verra alors le layout_weights et redimensionnera les autres TextViews pour occuper l'espace restant.

Questions connexes