-1

Comme décrit dans le titre, j'essaye d'avoir 2 TextViews l'un à côté de l'autre dans un LinearLayout. Les deux textviews par exemple contiennent 10 mots chacun. Dans ce cas, je veux qu'ils aient 50% de largeur. Cependant, quand le premier TextView a 10 mots, et l'autre a 1 mot, je voudrais que le premier TextView soit plus large (environ 90%). Comment puis-je le faire?Distribuer TextViews dans LinearLayout basé sur le contenu

Note: J'ai essayé de chercher, mais la seule chose que j'ai trouvée était de savoir comment redimensionner la police dans un TextView.

J'ai ajouté un peu de visuel sur l'aspect des TextViews (ne vous occupez pas des bordures aléatoires de l'Android Studio).

enter image description here

également mon code actuel, si vous voulez aider:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <TextView 
     android:id="@+id/title" 
     android:text="My title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="2" 
     android:textSize="16sp" 
     android:maxLines="1" 
     android:ellipsize="end"/> 

    <TextView 
     android:id="@+id/my_other_title" 
     android:text="My other title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="8" 
     android:textAlignment="textEnd" 
     android:maxLines="1" 
     android:ellipsize="end"/> 

</LinearLayout> 

Note: Je préfère utiliser seulement xml pour elle, mais si on ne peut programatically, puis cela fera

+1

Si vous dites que vous voulez changer le poids du TextView en fonction du nombre de mots qu'il contient, vous devez le faire dynamiquement dans le code en utilisant les conditions. XML ne peut le faire que de manière statique. – anton86993

Répondre

0

Pour ce faire, vous devrez calculer le poids estimé des deux TextViews, en utilisant la longueur du texte. La longueur de la autre titre sera utilisé comme poids pour le titre , et la longueur du titre sera utilisé pour le poids de l'autre titre.

LinearLayout.LayoutParams titleParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
titleParams.weight = myOtherTitle.getText().length(); 

LinearLayout.LayoutParams myOtherTitleParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
myOtherTitleParams.weight = title.getText().length(); 

title.setLayoutParams(titleParams); 
myOtherTitle.setLayoutParams(myOtherTitleParams);