/ / Java-Methode für Android: layout_gravity - Java, Android, Layout

Java-Methode für Android: layout_gravity - Java, Android, Layout

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 № 1

Na 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);