Aller au contenu

[Résolu] 3 Textviews dans un LinearLayout


gmic

Recommended Posts

Bonjour,

j'aimerai positionner dans un LinearLayout (ou autre à voir) 3 TextViews : 2 petits (1 collé à droite et 1 collé à gauche) et un gros au milieu.

Les 2 petits auront en général 3 caractères maximum, mais je ne voudrais pas leur donner une taille fixe. Le TextView du milieu pourra contenir beaucoup de texte et ne pas tenir sur une seule ligne (dans ce cas il faudra le tronquer), mais il pourra être aussi assez petit et laisser du vide à droite.

J'ai essayé en mettant des layout_weight à chacun (0.2, 0.6 t 0.2), les 3 sont positionnés au bon endroit plus ou moins, mais en fonction de la taille du TextView du milieu ça décale un peu tout :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout	xmlns:android="http://schemas.android.com/apk/res/android" 			
			android:layout_width="wrap_content"
			android:layout_height="wrap_content"
			android:background="#FFFFFF" 
			android:padding="5px"
			android:stretchColumns="1">
<TextView 	android:id="@+id/time" 
		android:layout_height="wrap_content"
		android:layout_width="wrap_content"
		android:paddingRight="5px" 
		android:textSize="20sp"
		android:layout_marginRight="10px"
		android:layout_weight="0.2"
		android:textColor="#000"
		android:gravity="left" />
<TextView 	android:id="@+id/match_name" 
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content"
		android:maxLines="1"
		android:ellipsize="end"
		android:textSize="20sp"
		android:layout_weight="0.6"
		android:gravity="left" />
<TextView 	android:id="@+id/score" 
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content"
		android:layout_gravity="right"
		android:textSize="20sp"
		android:layout_weight="0.2"
		android:gravity="right" />
</LinearLayout>

J'ai aussi essayé avec un tableLayout, ça à l'air de marcher, mais ça risque d'être un peu lourd puisque je dois mettre ça dans une liste et qu'il va y avoir beaucoup d'entrée non ?

Y a-t-il moyen dans un LinearLayout de laisser le premier TextView prendre la place dont il a besoin, lui coller un TextView sur sa gauche dont le texte sera éventuellement tronqué et enfin de mettre un autre Textview collé au bord droit ?

merci

Lien vers le commentaire
Partager sur d’autres sites

Salut!

Pour commencer, essaye de rajouter la propriété "weigth_sum" dans ton LinearLayout.

Et pour sa valeur, apparemment, tu comptes sur une base de 1 (0.2+0.6+0.2 = 1)...

Ensuite dis moi ce que ca donne...

Une autre solution serait de forcer tes largeurs en "dip".

En gros, "dip" est une unité de mesure qui va s'adapter en fonction de l'écran sur lequel ton appli sera installée, ce qui fait que tu auras le même résultat.

Tiens nous au courant! ;)

Lien vers le commentaire
Partager sur d’autres sites

Plusieurs choses selon moi :

  • Le android:layout_width="wrap_content" du linearLayout fait que le weight ne sert pas à grand chose (ca équilibre un peu c'est tout). Personnellement je mettrais un fill_parent ici ou tu équilibre le linear également avec un weight si d'autre chose horizontal.
  • Ajoute l'orientation si c'est un oublie (horizontal)
  • Le stretch column je crois que c'est pour les tableView
  • Dans le textView du milieu tu peux définir un maxWidth et un maxHeight en "dip" qui peuvent être très utile.
  • Dans les textes views des cotés tu peux aussi définir un minWidth en "dip"

Bon courage,

Jok

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ces infos, je connaissais pas cette unité, ça va me servir ailleurs :)

Entre temps j'ai essayé un RelativeLayout, en calant le bloc de droite contre le bord droit avec android:layout_alignParentRight="true". Maintenant avec le bloc de gauche avec une minWidth c'est bon et le bloc du centre positionné avec android:layout_toLeftOf et android:layout_toRightOf c'est bon ne dépasse plus.

Merci !

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...