web-dev-qa-db-fra.com

Comment définir dynamiquement la hauteur de textview android

Dans mon application, je dois définir du texte dynamique dans textview afin de le redimensionner de manière dynamique. J'ai mis:

<TextView
Android:id="@+id/TextView02" 
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textStyle="normal"
Android:text="Frontview"
Android:layout_weight="1"
Android:gravity="center_vertical"
Android:textColor="#0099CC"
Android:singleLine="false"
Android:maxLines="4"
Android:ellipsize="Marquee"
/>

La hauteur de l'affichage de mon texte ne dépasse pas deux lignes et le texte est coupé. Quelqu'un peut-il m'aider, s'il vous plaît?

Merci d'avance.

12
neha

Comme Konstantin l’a dit, ce code sera probablement ignoré si vous dépassez 4 lignes, sauf si vous supprimez Android:maxLines="4".

Voici comment définir la hauteur en code:

TextView tv = (TextView) findViewById(R.id.TextView02);
int height_in_pixels = tv.getLineCount() * tv.getLineHeight(); //approx height text
tv.setHeight(height_in_pixels);

Si vous souhaitez utiliser les unités DIP, ce qui permet à votre application de s’adapter à plusieurs tailles d’écran, vous devez multiplier le nombre de pixels par la valeur renvoyée par getResources().getDisplayMetrics().density;.

Cela dépend de votre comportement souhaité, mais vous pouvez également envisager de fixer la taille de TextView et d'autoriser l'utilisateur à faire défiler le texte:

TextView tv = (TextView)findViewById(R.id.TextView02);
tv.setMovementMethod(ScrollingMovementMethod.getInstance());
17
Aaron C
TextView tv;
----------------------
tv=new TextView(this);   // you take TextView id (R.id.textview1)

LinearLayout.LayoutParams Params1 = new LinearLayout.LayoutParams(15,50);
tv.setLayoutParams(Params1);   //you take linearlayout and relativelayout.
3
AnilPatel

Supprimer Android: maxLines = "4", il limite la hauteur de votre vue à 4 lignes de texte.

0
Konstantin Burov