Ich habe ein TableLayout, das nur eine Zeile und eine Zelle enthält. Ich möchte den Inhalt meiner Zelle horizontal zentriert sein. Ich habe versucht, zwei Ansätze:Android TableLayout und horizontale Schwerkraft
Erste Methode, habe ich das Attribut android: Schwerkraft = „center_horizontal“ auf dem TableRow Element und es funktioniert wie erwartet:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableRow android:gravity="center_horizontal">
<Button
android:id="@+id/MyButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Hello" />
</TableRow>
</TableLayout>
Zweite Methode, habe ich das Attribut android: layout_gravity = "center_horizontal" direkt auf dem Zellinhalt (die Schaltfläche hier) aber das bedeutet nicht die Mitte der Taste:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableRow>
<Button
android:id="@+id/MyButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/Hello" />
</TableRow>
</TableLayout>
Kann mir jemand erklären, warum der zweite Ansatz nicht funktioniert?
Danke
Riana
Hallo und vielen Dank für Ihre Antwort. In meinen Beispielen verstehe ich, warum der erste Ansatz funktioniert. Was nicht klar ist, warum der zweite fehlschlägt. Das auf die Schaltfläche angewendete Attribut layout_gravity sollte die Schaltfläche in der übergeordneten Ansicht (der TableRow) zentrieren. –
Ich verstehe nicht, wie dies nicht klar ist. Die Gravitation bezieht sich auf den Child-Inhalt der Tabellenzelle. Layout_gravity ist für die Platzierung der Tabellenzelle selbst in ihrem Elternteil. Genau wie in der Antwort erklärt. – joshgoldeneagle
In meinem Beispiel ist der Button das untergeordnete Element von TableRow. Wenn ich das "Gravity" -Attribut auf der TableRow setze, zentriert das seinen Inhalt, hier die Schaltfläche. Aber wenn ich das Attribut "layout_gravity" auf dem Button setze, erwarte ich, dass es sich auch innerhalb seines Containers, d. H. Dem TableRow, zentriert. Ich möchte die "Schwerkraft" auf den Container setzen oder "layout_gravity" auf den Inhalt sollte das gleiche Verhalten haben. Ich hoffe, ich bin klarer .. –