线性布局的常用属性:
水平布局(默认) android:orientation="horizontal"
垂直布局 android:orientation="vertical"
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<!-- ....省略....-->
</LinearLayout>
设置子控件的位置 (重力属性)
android:gravity --- center 水平垂直居中
--- center_horizontal 水平居中
--- center_vertical 垂直居中
--- top & bottom 顶部&底部
--- left & right 靠左&靠右
小提示:属性值可以叠加
例如:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:gravity="center_vertical|right">
</LinearLayout>
子控件也可以决定自己的位置 android:layout_gravity (容易失效)
--- 属性值与 android:gravity 完全一样
android:gravity VS android:layout_gravity
--- android:gravity 设置布局内部所有子 View
--- android:layout_gravity 设置 View 的本身
--- android:layout_gravity 属性的设置与父布局的 android:orientation 属性设置有关(导致大部分失效)
子控件按照权重比分配空间 android:layout_weight (只在线性布局中生效)
--- 表示 View 在父布局所占空间比例
--- 当不设置时,默认值为0
在不均分的情况下要把 layout_width设为0 ,等分的情况下 android:layout_width="wrap_content"
使用权重时宽度等于0是没有错的.
示例1:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <!--头部布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="100dp" android:background="#f0f"> </LinearLayout> <!--中间布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" //纵向分割,中间布局不能有高度 android:background="#ff0" android:gravity="center_vertical" android:orientation="horizontal" android:layout_weight="1" > <Button android:id="@+id/btn_wat1" android:layout_width="0dp" android:layout_height="wrap_content" android:text="解暑力:1" android:layout_weight="2" /> <Button android:id="@+id/btn_wat2" android:layout_width="0dp" android:layout_height="wrap_content" android:text="解暑力:2" android:layout_weight="1" /> <Button android:id="@+id/btn_wat3" android:layout_width="0dp" android:layout_height="wrap_content" android:text="解暑力:3" android:layout_weight="1" /> </LinearLayout> <!--底部布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="80dp" android:background="#0ff"> </LinearLayout> </LinearLayout>
padding 和 margin 属性
示例2:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ccc" android:orientation="vertical"> <!--行布局--> <LinearLayout android:id="@+id/box" //有id必须加orientation,否则报错 android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_marginTop="5dp" android:background="#fff" android:gravity="center_vertical" android:orientation="horizontal" android:padding="5dp" > <ImageView android:layout_width="70dp" android:layout_height="70dp" android:src="@mipmap/book" /> <!--文字说明部分--> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:orientation="vertical" android:layout_weight="1" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="记事本" android:layout_marginTop="3dp" android:textSize="16sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="版本: 1.0" android:layout_marginTop="6dp" android:textSize="12sp" android:textColor="#999" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="大小: 3.0M" android:layout_marginTop="6dp" android:textColor="#999" android:textSize="12sp" /> </LinearLayout> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="卸载" /> </LinearLayout> </LinearLayout>