从零开始学安卓笔记:线性布局

195 阅读2分钟

布局概述:

* 布局的作用
    --不可见的视图容器组件
    --负责管理其子控件在屏幕中显示的位置和大小
* 常用的几种布局类型
    --线性布局 LinearLayout
    --相对布局 RelativeLayout
    --帧布局 FrameLayout
    --格子布局 GridLayout

线性布局:

子控件按照横向或者纵向排列

相对布局:

子控件灵活的出现在某个特殊位置上
方便描述控件与控件的相对位置关系

帧布局:

子控件之间是层叠覆盖的关系
多应用在滑动页与碎片出现的场合

格子布局:

子控件被排列在一个表格之中

线性布局的常用属性:

* 排列方向属性
    --水平布局(默认):
        android:orientation = "horizontal"
    --垂直布局:
        android:orientation = "vertical"
* 设置子控件的位置
    android:gravity
        -- center 水平垂直居中
        -- center_horizontal 水平居中
        -- center_vertical 垂直居中
        -- top&bottom 顶部&底部
        -- left&right 靠左&靠右
    【小提示:属性值可以叠加,用"|"】
* 子控件也可以决定自己的位置
    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
* 权重属性的应用
    让中间部分充满剩余空间

示例:

<?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"
              android:background="#ccc">

<!--    行布局-->
    <LinearLayout
            android:id="@+id/box"
            android:background="#fff"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginEnd="5dp"
            android:padding="5dp"
            android:gravity="center_vertical">

        <ImageView
                android:src="@drawable/ic_launcher_background"
                android:layout_width="70dp"
                android:layout_height="70dp"/>

<!--        文字说明的部分-->
        <LinearLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_marginStart="5dp"
                android:layout_weight="1">

            <TextView
                    android:text="八格"
                    android:textSize="16sp"
                    android:layout_marginTop="3dp"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>

            <TextView
                    android:text="版本:1.0"
                    android:textSize="12sp"
                    android:textColor="#999"
                    android:layout_marginTop="6dp"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>

            <TextView
                    android:text="大小:18.05MB"
                    android:textSize="12sp"
                    android:textColor="#999"
                    android:layout_marginTop="6dp"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>
        </LinearLayout>

        <Button
                android:text="卸载"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
    </LinearLayout>
</LinearLayout>

总结:

* Android常见布局有4种,其中线性布局和相对布局占主导
* 设置gravity或layout_gravity属性来控制控件在父容器中的位置
* 设置layout_weight属性来分配剩余空间
* 通过padding和layout_margin属性来保持间距和空隙
* 设计UI布局要从大局入手,逐步细化

-- _erizo