2010-09-23 21 views
173

Posso usare android:gravity="bottom|center_horizontal" in xml su una vista testo per ottenere i risultati desiderati, ma ho bisogno di farlo a livello di programmazione. La mia textview è all'interno di un tablerow se questo è importante in un relativelayout.Android imposta la gravità per una TextView a livello di programmazione

ho provato:

LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL); 
labelTV.setLayoutParams(layoutParams); 

Ma se ho capito bene, che si applicherebbe al tablerow, non il TextView?

risposta

422
labelTV.setGravity(Gravity.CENTER | Gravity.BOTTOM); 

Inoltre, stai parlando gravità o circa layout_gravity? Quest'ultimo non funzionerà in un RelativeLayout .

+0

Grazie a quello ha funzionato. Mi sento un po 'sciocco ora per averlo perso. In origine il problema era impostare i margini su un campo di testo. Suppongo di averlo assunto perché non riuscivo a trovare un metodo setMargin() che non esistesse nemmeno setGravity. – Nate

+0

superB ...................... –

+7

Grazie +1, ho trovato la documentazione, ma come al solito va solo a metà, non affermando chiaramente dove ottengo il costanti di gravità da (Gravity.CENTER ecc.). –

32

Questo sarà centrare il testo in una vista di testo:

TextView ta = (TextView) findViewById(R.layout.text_view); 
LayoutParams lp = new LayoutParams(); 
lp.gravity = Gravity.CENTER_HORIZONTAL; 
ta.setLayoutParams(lp); 
+3

Che non ha funzionato. "lp.gravity non può essere risolto o non è un campo" – Nate

+0

Questo è strano perché questo codice funziona e si compila bene per me. Come si imposta il peso di una vista testuale in quanto non è un metodo setWeight()? – radiofrequency

+4

Ho trovato il problema. Nate sta importando android.view.ViewGroup. Quella classe ha diversi tipi di metodi e non si compila. Dovresti invece importare android.view.WindowManager. – Finnboy11

10

Siamo in grado di impostare il layout di gravità in ogni caso come qui di seguito modo-

myView = findViewById(R.id.myView); 
myView.setGravity(Gravity.CENTER_VERTICAL|Gravity.RIGHT); 
or 
myView.setGravity(Gravity.BOTTOM); 

Questo è equilent al di sotto del codice XML

<... 
android:gravity="center_vertical|right" 
... 
.../> 
+0

La gravità del layout non è uguale alla gravità –

1

Si dovrebbe usare textView.setGravity(Gravity.CENTER_HORIZONTAL);.

Ricordate che utilizzando

LinearLayout.LayoutParams layoutParams =new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
layoutParams2.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL; 

non funzionerà. Questo imposterà la gravità per il widget e non per il suo testo.

1

Usa questo codice

 TextView textView = new TextView(YourActivity.this); 
     textView.setGravity(Gravity.CENTER | Gravity.TOP); 
     textView.setText("some text"); 
0
textView.setGravity(Gravity.CENTER | Gravity.BOTTOM); 

Questo imposterà la gravità della vostra TextView.

Problemi correlati