案例一:相对布局
- 相对布局(重点)
1.1 相对布局窗口内子组件的位置总是相对兄弟组件、父容器来决定的,因此叫相对布局
1.2 如果A组件位置是由B组件的位置决定的,Android要求先定B组件,再定义A组件
注1:注意XML中组件的顺序,不然会报错
注2:android新版本中组件的定义顺序没有关系
1.3 RelativeLayout支持的二个xml属性
1.3.1 android:gravity :设置该布局容器内各子组件的对齐方式
1.3.2 android:ignoreGravity:设置哪个组件不受gravity属性的影响
1.4 控制子组件布局的内部类RalativeLayout.LayoutParams
此内部类的属性分二类
1.4.1 boolean
相对父元素
alignParent…
center…(只有在父元素中才存在水平或垂直居中等)
1.4.2 id型
@+id和@id的区别
@+id/x1(添加新ID)
@id/x1(引用此ID)
相对于指定元素(根据ID指定)
1.5 layout_toRightOf,layout_toLeftOf(是一种靠拢动作)
代码展示
<?xml version="1.0" encoding="utf-8"?>
案例二:网格布局
–4的跨行出现的问题,因为4的向下没有东西拦住了
2. 网格布局
2.1 常用属性
GridLayout布局相关属性:rowCount(跨行的数量)、columnCount(跨列的数量)
GridLayout中子控件相关属性:layout_gravity=“fill_horizontal|fill_vertical” //水平填充/垂直填充(跨行跨列的颜色填充)
2.2 Space标签的作用:挡住控件,让其不超出网格的范围(针对垂直填充效果)
计算器布局代码展示
<!-- n行n列 -->
<Button
android:id="@+id/button1"
android:layout_column="0"
android:layout_gravity="left"
android:layout_row="0"
android:text="1" />
<Button
android:id="@+id/button4"
android:layout_column="0"
android:layout_gravity="right|bottom"
android:layout_row="1"
android:text="4" />
<Button
android:id="@+id/button7"
android:layout_column="0"
android:layout_gravity="left|bottom"
android:layout_row="2"
android:text="7" />
<Button
android:id="@+id/button13"
android:layout_column="0"
android:layout_columnSpan="2"
android:layout_gravity="fill"
android:layout_row="3"
android:text="0" />
<Button
android:id="@+id/button14"
android:layout_column="0"
android:layout_columnSpan="3"
android:layout_gravity="fill"
android:layout_row="4"
android:text="+" />
<Button
android:id="@+id/button2"
android:layout_column="1"
android:layout_gravity="left|bottom"
android:layout_row="0"
android:text="2" />
<Button
android:id="@+id/button5"
android:layout_column="1"
android:layout_gravity="left|bottom"
android:layout_row="1"
android:text="5" />
<Button
android:id="@+id/button8"
android:layout_column="1"
android:layout_gravity="right"
android:layout_row="2"
android:text="8" />
<Button
android:id="@+id/button3"
android:layout_column="2"
android:layout_gravity="left|bottom"
android:layout_row="0"
android:text="3" />
<Button
android:id="@+id/button6"
android:layout_column="2"
android:layout_gravity="left"
android:layout_row="1"
android:text="6" />
<Button
android:id="@+id/button9"
android:layout_column="2"
android:layout_gravity="left"
android:layout_row="2"
android:text="9" />
<Button
android:id="@+id/button17"
android:layout_column="2"
android:layout_gravity="left"
android:layout_row="3"
android:text="." />
<Button
android:id="@+id/button16"
android:layout_column="3"
android:layout_columnSpan="2"
android:layout_gravity="left"
android:layout_row="0"
android:text="/" />
<Button
android:id="@+id/button10"
android:layout_column="3"
android:layout_columnSpan="2"
android:layout_gravity="left"
android:layout_row="1"
android:text="*" />
<Button
android:id="@+id/button11"
android:layout_column="4"
android:layout_gravity="left|bottom"
android:layout_row="2"
android:text="-" />
<Button
android:id="@+id/button12"
android:layout_column="4"
android:layout_gravity="fill"
android:layout_row="3"
android:layout_rowSpan="2"
android:text="=" />
<Space
android:layout_width="1dp"
android:layout_height="32dp"
android:layout_column="0"
android:layout_row="2" />
<Space
android:layout_width="63dp"
android:layout_height="15dp"
android:layout_column="5"
android:layout_row="2" />
<Space
android:layout_width="100dp"
android:layout_height="220dp"
android:layout_row="7" />
<TextView
android:id="@+id/textView1"
android:layout_column="0"
android:layout_columnSpan="5"
android:layout_gravity="fill"
android:layout_row="6"
android:text="0"
android:textAppearance="?android:attr/textAppearanceLarge" />
![在这里插入图片描述](https://img-blog.csdn.net/20181021000653162?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tpZFNobWlseQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)