5

J'ai un relativelayout, et dedans deux textviews. La vue de texte 1 est alignée en haut et à gauche avec le parent. Textview 2 est aligné à droite de textview 1, et à droite avec parent. Cela crée un problème si le texte dans 1 est trop long, ce qui signifie que 1 va pousser 2 hors de l'écran le pire des cas.TextView et Ellipsize quand pressé par d'autres TextView

Comment puis-je obtenir ces deux "sacrifier" du texte n ° 1 au lieu de 2? La largeur minimale ne semble pas fonctionner. Mon objectif final est d'ellipser le texte 1, mais semble dépendre de la vue du texte pour être correctement dimensionnée en premier lieu.

Voici le xml

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout android:id="@+id/RelativeLayout01" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       xmlns:android="http://schemas.android.com/apk/res/android"> 
<TextView android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/TextView02" 
      android:layout_alignParentRight="true" 
      android:layout_toRightOf="@+id/TextView01" 
      android:text="I am number 2" 
      android:gravity="right" 
      android:lines="1" 
      android:minWidth="32sp"> 
</TextView> 
<TextView android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:id="@+id/TextView01" 
      android:layout_alignParentLeft="true" 
      android:textSize="22sp" 
      android:layout_width="wrap_content" 
      android:lines="1" 
      android:text="sd sd asd sad asd asd saasd a"> 
</TextView> 

</RelativeLayout> 
+3

En fait, cela répond parfaitement à cette question: http://stackoverflow.com/questions/3785221/two-textviews-side-by-side-only-one-to-ellipsize – sandos

Répondre

0

Vous pouvez facilement faire cela avec un LinearLayout horizontal en utilisant l'attribut de poids. Le code suivant fonctionnera pour vous. J'ai aussi défini les id pour vos vues, donc copiez directement cette copie et cela fonctionnera dans votre code.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:orientation="horizontal" 
    > 
    <TextView 
     android:id="@+id/TextView01" 
     android:layout_height="wrap_content" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:ellipsize="end" 
     android:maxLines="1" 
     android:text="Some Long and Random Text Some Long and Random Text" 
     /> 
    <TextView 
     android:id="@+id/TextView02" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_weight="0" 
     android:layout_gravity="right"  
     android:text="I am number 2" 
    /> 
</LinearLayout> 
+1

J'ai un problème avec cette solution dans mon projet, le premier texte est ellipsisé comme il se doit, mais laisse un espace vide à la fin, parce qu'il raccourcit des mots entiers (et le dernier est assez "long") donc le second texte est plus loin qu'il devrait être . Toute solution à ce problème – Squeazer

0

get idée de mon textview et il suffit d'utiliser votre textview comme ça, espérons que ce travail est:

    <TextView 
        android:id="@+id/tv_songtitle" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginLeft="5dp" 
        android:text="Song Title" 
        android:singleLine="true" 
        android:ellipsize="end" 
        android:textSize="13dp" 
        android:textStyle="bold" /> 
0

Utiliser l'attribut android:shrinkColumns="0" de TableLayout.