布局概述:
* 布局的作用
--不可见的视图容器组件
--负责管理其子控件在屏幕中显示的位置和大小
* 常用的几种布局类型
--线性布局 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