2010-08-14 9 views
2

J'ai un View composé de deux TextView si le premier est trop large puis-je obtenir le deuxième à afficher sur la ligne suivante?Mise en page Android - Texte trop large?

Existe-t-il une solution?

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

<TextView android:text="If this text is too wide" 
android:textSize="20px" 
android:textStyle="bold" 
android:id="@+id/del01" 
android:paddingTop="3px" 
android:paddingBottom="3px" 
android:gravity="left" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 

<TextView android:text="I want this on a different line" 
android:id="@+id/del02" 
android:gravity="center_horizontal" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"/> 

</LinearLayout> 
+0

est-il indispensable d'avoir deux TextView? Pourquoi ne pas en utiliser un et le limiter à deux lignes? – Asahi

+0

Je suppose que c'est à cause de la façon dont il veut que l'emballage se comporte; S'il s'agissait d'un seul TextView, il s'enroulerait à la limite, mais il veut qu'il s'enroule sur chaque partie du texte. –

+0

Excellente question. J'ai essayé pendant quelques minutes et ne pourrais pas le faire :( – Macarse

Répondre

1

Créez votre propre classe d'affichage dérivée de Afficher et d'afficher les deux textes dans cette vue. Remplacer draw() et vous pouvez faire ce que vous voulez là en fonction de la taille du texte.

Remarque: Il n'est généralement pas judicieux de définir les tailles et les paddings en "px". Vous devriez plutôt utiliser "dp" qui sera automatiquement mis à l'échelle sur différentes tailles et densités d'écran.

+0

Got it !!!! avoir deux vues v2a et v2b v1.measure (v1.getWidth(), v1.getHeight()); v2a.measure (v2a.getWidth(), v2a.getHeight()); if (lv.getWidth() <(v1.getMeasuredWidth() + v2a.getMeasuredWidth())) // trop grand v2a.setVisibility (View.GONE); else v2b.setVisibility (View.GONE); merci pour les pensées de toute façon Steve –