2010-09-23 9 views
173

Ich kann android:gravity="bottom|center_horizontal" in XML auf einer Textansicht verwenden, um meine gewünschten Ergebnisse zu erhalten, aber ich muss dies programmgesteuert tun. Meine Textansicht ist in einem tablerow, wenn das in einer relativelayout von Bedeutung ist.Android die Schwerkraft für ein TextView programmgesteuert setzen

Ich habe versucht:

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

Aber wenn ich richtig verstehe, dass es auf die tablerow gelten würde, nicht die Textview?

Antwort

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

Auch reden Sie Schwere oder über layout_gravity? Letzteres funktioniert nicht in einem RelativeLayout.

+0

Danke das hat funktioniert. Ich fühle mich jetzt ein bisschen albern, weil ich das vermisst habe. Ursprünglich bestand das Problem darin, die Ränder in einem Textfeld festzulegen. Ich nehme an, dass ich angenommen habe, weil ich eine setMargin() -Methode nicht finden konnte, die setGravity auch nicht existierte. – Nate

+0

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

+7

Danke +1, ich fand die Dokumentation, aber wie üblich geht es nur halbwegs, nicht klar, wo ich das bekomme Schwerkraftkonstanten von (Gravity.CENTER usw.). –

32

Dadurch wird der Text in einem Textansicht Zentrum:

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

Das hat nicht funktioniert. "Lp.gravity kann nicht aufgelöst werden oder ist kein Feld" – Nate

+0

Das ist seltsam, weil dieser Code funktioniert und kompiliert einfach gut für mich. Wie würden Sie das Gewicht einer Textansicht festlegen, da es keine Methode setWeight() gibt? – radiofrequency

+4

Ich habe das Problem gefunden. Nate importiert android.view.ViewGroup. Diese Klasse hat verschiedene Arten von Methoden und kompiliert nicht. Sie sollten stattdessen android.view.WindowManager importieren. – Finnboy11

10

Wir können wie unten Layout Schwerkraft auf einer beliebigen Ansicht gesetzt Weg-

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

Dies ist equilent auf unter xml-Code

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

Layout Schwerkraft ist nicht gleich Schwerkraft –

1

Sie textView.setGravity(Gravity.CENTER_HORIZONTAL); verwenden sollten.

Denken Sie daran, dass

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

verwendet, wird nicht funktionieren. Dies wird die Schwerkraft für das Widget und nicht für den Text festlegen.

1

Mit diesem Code

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

Diese Schwere Ihrer Textview eingestellt werden.