Ich würde gerne wissen, ob es eine Möglichkeit gibt, anzurufen android:layout_gravity
Eigenschaft aus einer Java-Methode. Ich habe in der Android-Dokumentation keine Methode dafür gefunden. Dies ist das Bild des Layouts, das ich implementieren möchte:
http://www.anddev.org/resources/image/2234
Ich weiß, wie ich es mit XML mache:
<FrameLayout
xlmns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:layout_gravity="left|center_vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="<" />
<Button
android:layout_gravity="right|center_vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=">" />
</FrameLayout>
In meiner Situation muss ich dies jedoch über Java-Code tun, da ich andere Layoutansichten dynamisch implementieren werde. Um zu vermeiden, dass XML-Layout mit Java-Code zusammengeführt wird, würde ich es vorziehen, das gesamte Layout mit Java zu erstellen.
Antworten:
29 für die Antwort № 1Na soweit ich das verstehe suchst du Dies Für FrameLayout für andere Layouts siehe entsprechende LayoutParams-Klassen. Verwenden Sie zum Festlegen der Schwerkraft wie in XML Folgendes:
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,Gravity.LEFT | Gravity.CENTER_VERTICAL)
gefolgt von addView
mit neu gebaut LayoutParams
2 für die Antwort № 2
Vielleicht verstehe ich dich falsch, aber hier ist es:
http://developer.android.com/reference/android/widget/TextView.html#setGravity(int)
2 für die Antwort № 3
Achtung! Dies würde jedoch nicht mit LinearLayout funktionieren, da sich der Konstruktor LinearLayout.LayoutParams (...) vom Konstruktor FrameLayout.LayoutParams (...) unterscheidet. Der dritte Parameter ist nicht die Schwerkraft, sondern das Gewicht.
LinearLayout.LayoutParams(int width, int height, float weight)
im Gegensatz zu
FrameLayout.LayoutParams(int width, int height, int gravity)
und dieser Anruf trotz nicht produzieren Compilerfehler ist tatsächlich falsch:
lparams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.LEFT);
1 für die Antwort № 4
button.setBackgroundResource(R.drawable.sound_on);
button.setText("On");
button.setGravity(Gravity.CENTER_VERTICAL| Gravity.RIGHT);
button.invalidate();
1 für die Antwort № 5
Um es zu ändern layout_gravity
Attribut für eine vorhandene Ansicht:
Button button = (Button) findViewById(R.id.some_button);
FrameLayout.LayoutParams params;
params = (LayoutParams) button.getLayoutParams();
params.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;
button.setLayoutParams(params);
Die Schaltfläche ist in a enthalten FrameLayout
was hat a gravity
Attribut entsprechend dem layout_gravity
XML-Attribut Link zur Dokumentation.
-1 für die Antwort № 6
Bevor Sie die Schaltfläche hinzufügen, sollten Sie die Ausrichtung Ihres Layouts ändern
yourbutton.setGravity(Gravity.RIGHT);
LayoutParams layout = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.RIGHT);
layout.gravity = Gravity.RIGHT;
yourbutton.setLayoutParams(layout);
yourlayout.setGravity(Gravity.RIGHT);
yourlayout.addView(yourbutton);