Android, Layout, Center, Positionierung

1)
Es gibt sowohl die XML Attribute „android:gravity“ und „layout_gravity“. Beide werden verwendet und sind nicht austauschbar. Gravity ist allgemeiner.

2)
Alle Layouts brauchen ein layout_height und layout_width.

UI-Elemente darin, wie z.B. TextView oder ImageView brauchen diese beiden Attribute _nicht_.

3)
Wie bei HTML ist Padding der Innen-, Margin der Außenabstand.

Achtung: Benutzt man Margin mit MATCH_PARENT, können die rechten Elemente rausrutschen. Margin wird bei der Berechnung für MATCH_PARENT scheinbar nicht berücksichtigt und somit wird alles zu groß und verschiebt sich über den rechten Rand hinaus. Padding verwenden!

4)
BaselineAlign ist nur bei RelativeLayout sinnvoll. Sonst, z.B. bei TableRow ohne Effekt.

5)
Beim LinearLayout kann „android:layout_weight“ sehr wichtig sein.

6)
2 Varianten das gleiche Ergebnis (3 Icons mit Text drunter, zentriert) zu erzielen:

Variante #1:
main.xml

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
	style="@style/main_table">

	<TableRow style="@style/main_table_row">
		<ImageView android:src="@drawable/hiking_button"
			android:onClick="onClickHiking" />
		<ImageView android:src="@drawable/waypoint_button"
			android:onClick="onClickWaypoint" />
		<ImageView android:src="@drawable/piknik_button"
			android:onClick="onClickPiknik" />
	</TableRow>
	<TableRow style="@style/main_table_row">
		<TextView style="@style/main_button_text" android:text="@string/hiking_button" />
		<TextView style="@style/main_button_text" android:text="@string/waypoint_button" />
		<TextView style="@style/main_button_text" android:text="@string/piknik_button" />
	</TableRow>
</TableLayout>

styles.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

	<style name="main_table">
		<item name="android:layout_width">match_parent</item>
		<item name="android:layout_height">match_parent</item>
		<item name="android:gravity">center</item>
	</style>

	<style name="main_table_row">
		<item name="android:gravity">center</item>
	</style>

	<style name="main_button_text">
		<item name="android:padding">10dip</item>
	</style>

</resources>

Variante #1:
main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="match_parent"
	android:layout_height="match_parent">

	<LinearLayout style="@style/main_linear_inner">
		<ImageView style="@style/main_button_image" android:src="@drawable/hiking_button"
			android:onClick="onClickHiking" />
		<ImageView style="@style/main_button_image" android:src="@drawable/waypoint_button"
			android:onClick="onClickWaypoint" />
		<ImageView style="@style/main_button_image" android:src="@drawable/piknik_button"
			android:onClick="onClickPiknik" />
	</LinearLayout>

	<LinearLayout style="@style/main_linear_inner">
		<TextView style="@style/main_button_text" android:text="@string/hiking_button" />
		<TextView style="@style/main_button_text" android:text="@string/waypoint_button" />
		<TextView style="@style/main_button_text" android:text="@string/piknik_button" />
	</LinearLayout>

</LinearLayout>

styles.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

	<style name="main_linear_inner">
		<item name="android:layout_width">match_parent</item>
		<item name="android:layout_height">match_parent</item>
		<item name="android:orientation">horizontal</item>
		<item name="android:gravity">center_horizontal</item>
		<item name="android:layout_weight">1</item>
	</style>

	<style name="main_button_image">
		<item name="android:layout_width">wrap_content</item>
		<item name="android:layout_height">wrap_content</item>
		<item name="android:layout_gravity">bottom</item>
		<item name="android:padding">10dip</item>
	</style>

	<style name="main_button_text">
		<item name="android:layout_width">wrap_content</item>
		<item name="android:layout_height">match_parent</item>
		<item name="android:padding">10dip</item>
	</style>

</resources>

Bei der zweite Variante ist der Text nicht ganz mittig unter den Icons. Deshalb habe ich im Endeffekt Variante #1 genommen.

Advertisements
Dieser Beitrag wurde unter Uncategorized veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s