2010-09-23 8 views
173

Puedo usar android:gravity="bottom|center_horizontal" en xml en una vista de texto para obtener los resultados deseados, pero tengo que hacer esto programáticamente. Mi textview está dentro de un tablerow si eso importa en un relativelayout.Android establece la gravedad para un TextView programmatically

que he intentado:

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

Pero si he entendido bien, que se aplicaría a la tablerow, no el TextView?

Respuesta

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

Además, estás hablando gravedad o alrededor layout_gravity? El último no funcionará en un RelativeLayout.

+0

Gracias que funcionó. Me siento un poco tonto ahora por perder eso. Originalmente, el problema era establecer los márgenes en un campo de texto. Supongo que asumí porque no pude encontrar un método setMargin() que establezca que Gravity tampoco existiría. – Nate

+0

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

+7

Gracias +1, encontré la documentación, pero como de costumbre solo va a la mitad, sin indicar claramente dónde obtengo el Constantes de gravedad de (Gravity.CENTER, etc.). –

32

Esto centrará el texto en una vista de texto:

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

Eso no funcionó. "lp.gravity no se puede resolver o no es un campo" – Nate

+0

Eso es extraño porque este código funciona y compila muy bien para mí. ¿Cómo establecerías el peso de una vista de texto ya que no hay un método setWeight()? – radiofrequency

+4

Encontré el problema. Nate está importando android.view.ViewGroup. Esa clase tiene diferentes tipos de métodos y no compila. Debería importar android.view.WindowManager en su lugar. – Finnboy11

10

Podemos establecer la gravedad de diseño en cualquier punto de vista, como a continuación manera-

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

Ésta es equilent a continuación código XML

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

La gravedad del diseño no es lo mismo que la gravedad –

1

Debe utilizar textView.setGravity(Gravity.CENTER_HORIZONTAL);.

Recuérdese que la utilización

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

no funcionará. Esto establecerá la gravedad para el widget y no para su texto.

1

Usar este código

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

Esto establecerá la gravedad de su TextView.