2010-08-19 21 views
12

Nella mia applicazione ho bisogno di impostare il testo dinamico per la mia visualizzazione di testo così voglio che venga ridimensionato in modo dinamico. Ho impostato:Come impostare dinamicamente altezza textview android

<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" 
/> 

L'altezza del testo non supera le 2 righe e il testo viene tagliato. Qualcuno può aiutarmi?

Grazie in anticipo.

risposta

17

Come detto Konstantin, questo codice sarà probabilmente ignorato dopo si supera 4 linee a meno che non si rimuove android:maxLines="4"

Questo è come si dovrebbe impostare l'altezza nel codice:

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

Se si desidera utilizzare dip units, che consente all'app di scalare su più dimensioni dello schermo, moltiplicare il numero di pixel per il valore restituito da getResources().getDisplayMetrics().density;

Questo dipende dal comportamento desiderato, ma si potrebbe anche considerare r avere la dimensione TextView fisso, e permette all'utente di scorrere il testo:

TextView tv = (TextView)findViewById(R.id.TextView02); 
tv.setMovementMethod(ScrollingMovementMethod.getInstance()); 
+0

Come ottenere il valore dinamico per height_in_pixels? – neha

+0

Ho modificato la mia risposta per ottenere l'altezza approssimativa del testo. Potresti voler aggiungere un piccolo buffer in modo che i caratteri che si trovano sotto la linea non siano tagliati ("g", "y", ecc.). –

+0

Grazie Aaron C, ma il testo è scomparso dopo aver impostato la sua altezza. L'altezza è impostata su 0 nonostante la tv non sia nullo. – neha

0

Rimuovi android: maxLines = "4", limita l'altezza della vista a 4 righe di testo.

+0

mia taglia TextView non è andare oltre 2 linee e il testo è ottenere taglio. – neha

3
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. 
Problemi correlati