layout_gravity в LinearLayout
Это мой макет:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_marginLeft="5dip" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textColor="#ffffff" >
</TextView>
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/nazajGumb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/roaming_backbtn" >
</Button>
<Button
android:id="@+id/homeBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="@string/roaming_homebtn" >
</Button>
</LinearLayout>
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="15dip"
android:prompt="@string/roaming_spinnerPrompt" />
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Random text"
android:textColor="#ffffcc" />
<Button
android:id="@+id/testBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="test" >
</Button>
</LinearLayout>
Позиционирование ImageView и TextView в LinearLayout2 и расположение кнопок в LinearLayout3 не работает (с использованием гравитации макета).
Что мне здесь не хватает?
3 ответа
Это не тот путь, в котором android:layout_gravity
работает. И то и другое, left
а также center_horizontal
параметры работают только когда android:orientation
является vertical
, Чтобы добиться того, что вы хотите, лучше использовать RelativeLayout
:
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="5dip"/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_centerHorizontal="true"
android:textColor="#ffffff"/>
</RelativeLayout>
Добавив к ответу @Cristian, то же самое можно сделать и с помощью линейного макета, широко используя атрибуты - "вес" и "вес_сумма" (хотя это более утомительный подход) -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_margin="1dp"
tools:context=".MainActivity"
android:weightSum="5"
android:padding="10dp"
android:id="@+id/parent_linear_layout">
<!-- Sub #1 Linear Layout #1 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="1dp"
android:orientation="horizontal"
android:layout_weight="1"
android:weightSum="5"
android:id="@+id/sub_1_linear_layout_1">
<!-- Sub #2 Linear Layout #1 -->
<LinearLayout
android:layout_width="1dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="1"
android:id="@+id/sub_2_linear_layout_1">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:src="@drawable/stack_overflow"/>
</LinearLayout>
<!-- Sub #2 Linear Layout #2 -->
<LinearLayout
android:layout_width="1dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="1"
android:id="@+id/sub_2_linear_layout_2">
</LinearLayout>
<!-- Sub #2 Linear Layout #3 -->
<LinearLayout
android:layout_width="1dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:layout_weight="1"
android:id="@+id/sub_2_linear_layout_3">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/stack_overflow"
android:textColor="#111111"/>
</LinearLayout>
<!-- Sub #2 Linear Layout #4 -->
<LinearLayout
android:layout_width="1dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="1"
android:id="@+id/sub_2_linear_layout_4">
</LinearLayout>
<!-- Sub #2 Linear Layout #5 -->
<LinearLayout
android:layout_width="1dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="1"
android:id="@+id/sub_2_linear_layout_5">
</LinearLayout>
</LinearLayout>
<!-- Sub #1 Linear Layout #2 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="1dp"
android:orientation="horizontal"
android:layout_weight="1"
android:weightSum="5"
android:id="@+id/sub_1_linear_layout_2">
<!-- Sub #2 Linear Layout #1 -->
<LinearLayout
android:layout_width="1dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="1"
android:id="@+id/sub_2_linear_layout_1_2">
</LinearLayout>
<!-- Sub #2 Linear Layout #2 -->
<LinearLayout
android:layout_width="1dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="1"
android:id="@+id/sub_2_linear_layout_2_2">
</LinearLayout>
<!-- Sub #2 Linear Layout #3 -->
<LinearLayout
android:layout_width="1dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:layout_weight="1"
android:id="@+id/sub_2_linear_layout_3_2">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/back"
android:id="@+id/back_button"/>
</LinearLayout>
<!-- Sub #2 Linear Layout #4 -->
<LinearLayout
android:layout_width="1dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="1"
android:id="@+id/sub_2_linear_layout_4_2">
</LinearLayout>
<!-- Sub #2 Linear Layout #5 -->
<LinearLayout
android:layout_width="1dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:layout_weight="1"
android:id="@+id/sub_2_linear_layout_5_2">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/home"
android:id="@+id/home_button"/>
</LinearLayout>
</LinearLayout>
<!-- Sub #1 Linear Layout #3 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="1dp"
android:orientation="horizontal"
android:gravity="center"
android:layout_weight="1"
android:id="@+id/sub_1_linear_layout_3">
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:prompt="@string/random_prompt"/>
</LinearLayout>
<!-- Sub #1 Linear Layout #4 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="1dp"
android:orientation="horizontal"
android:gravity="center"
android:layout_weight="1"
android:id="@+id/sub_1_linear_layout_4">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#111111"
android:text="@string/random_text"/>
</LinearLayout>
<!-- Sub #1 Linear Layout #5 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="1dp"
android:orientation="horizontal"
android:gravity="center"
android:layout_weight="1"
android:id="@+id/sub_1_linear_layout_5">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#111111"
android:text="@string/test_button"/>
</LinearLayout>
</LinearLayout>
ПРИМЕЧАНИЕ. Начиная с уровня API 8, «fill_parent» устарел, и вместо него используется «match_parent». См. В чем разница между match_parent и fill_parent?
android:layout_marginLeft="5dip"
должно быть (дп не провал)
android:layout_marginLeft="5dp"