android提供了五种布局管理器
(1)相对布局管理器(RelativeLayout)通过相对定位的方式来控制组件的摆放位置
XML属性 | 描述 |
---|---|
android:gravity | 用于设置布局管理器中各子组件的对齐方式 |
android:ignoreGravity | 用于指定哪个组件不受gravity属性的影响 |
子组件的属性略
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@mipmap/bg"
tools:context="com.mingrisoft.MainActivity" >
<!-- 添加一个居中显示的文本视图textView1 -->
<TextView android:text="发现有Widget的新版本,您想现在就安装吗?"
android:id="@+id/textView1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_centerInParent="true"
/>
<!-- 添加一个按钮button2,该按钮与textView1的右边界对齐 -->
<Button
android:text="以后再说"
android:id="@+id/button2"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignRight="@id/textView1"
android:layout_below="@id/textView1"
/>
<!-- 添加一个在button2左侧显示的按钮button1 -->
<Button
android:text="现在更新"
android:id="@+id/button1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_below="@id/textView1"
android:layout_toLeftOf="@id/button2"
/>
</RelativeLayout>
(2)线性布局管理器(LinearLayout)是指在垂直或者水平的方向依次摆放组件
XML属性 | 描述 |
---|---|
android:orientation | 组件的排列方式,有horizontal和vertical |
android:gravity | 组件的显示位置 |
android:layout_width | 组件的基本宽度 |
android:layout_height | 组件的基本高度 |
android:id | 用于为当前组件指定一个id属性 |
android:background | 背景 |
<?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:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="mingrisoft.com.MainActivity">
<!--第一行-->
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="20dp"
android:hint="QQ号/微信号/Email"
android:drawableLeft="@mipmap/zhanghao"
/>
<!--第二行-->
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="20dp"
android:hint="密码"
android:drawableLeft="@mipmap/mima"
/>
<!--第三行-->
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登录"
android:textColor="#FFFFFF"
android:background="#FF009688"/>
<!--第四行-->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登录遇到问题?"
android:gravity="center_horizontal"
android:paddingTop="20dp"/>
</LinearLayout>
(3)帧布局管理器(FrameLayout)所有组件会摆放在容器的左上角
XML属性 | 描述 |
---|---|
android:foreground | 设置该帧布局的前景图像 |
android:foregroundGravity | 定义绘制前景图像的gravity属性,即前景图像的显示的位置 |
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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:foreground="@mipmap/mr"
android:foregroundGravity="bottom|right"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.mingrisoft.MainActivity" >
<!-- 添加居中显示的蓝色背景的TextView,将显示在最下层 -->
<TextView
android:id="@+id/textView1"
android:layout_width="280dp"
android:layout_height="280dp"
android:layout_gravity="center"
android:background="#FF0000FF"
android:textColor="#FFFFFF"
android:text="蓝色背景的TextView" />
<!-- 添加居中显示的天蓝色背景的TextView,将显示在中间层 -->
<TextView
android:id="@+id/textView2"
android:layout_width="230dp"
android:layout_height="230dp"
android:layout_gravity="center"
android:background="#FF0077FF"
android:textColor="#FFFFFF"
android:text="天蓝色背景的TextView" />
<!-- 添加居中显示的水蓝色背景的TextView,将显示在最上层 -->
<TextView
android:id="@+id/textView3"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_gravity="center"
android:background="#FF00B4FF"
android:textColor="#FFFFFF"
android:text="水蓝色背景的TextView" />
</FrameLayout>
(4)表格布局管理器(TableLayout)使用表格的方式按行、列来摆放组件
XML属性 | 描述 |
---|---|
android:collapseColumns | 设置需要被隐藏的列的序列号 |
android:shrinkColumns | 设置允许被收缩的列的列序号 |
android:stretchCloumns | 设置允许被拉伸的列的列序号 |
<?xml version="1.0" encoding="utf-8"?>
<TableLayout 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:background="@mipmap/biaoge"
android:stretchColumns="0,3"
tools:context="mingrisoft.com.MainActivity">
<!--第一行-->
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="200dp"
>
<TextView />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="账 号:"
android:gravity="center_horizontal"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="邮箱或者手机号"
/>
<TextView />
</TableRow>
<!--第二行-->
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="20dp"
>
<TextView />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="密 码:"
android:gravity="center_horizontal"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="输入6-16位数字或字母"
/>
<TextView />
</TableRow>
<!--第三行-->
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="注 册"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FF8247"
android:text="登 录"/>
<TextView />
</TableRow>
<!--第四行-->
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="20dp"
>
<TextView />
<TextView />
<TextView
android:text="忘记密码?"
android:textColor="#FF4500"
android:gravity="right"
/>
<TextView />
</TableRow>
</TableLayout>
(5)网格布局器(GridLayout)屏幕被虚拟的细线划分为行、列和单元格,每个单元格放置一个组件
XML属性 | 描述 |
---|---|
android:columnCount | 用于指定网格的最大列数 |
android:orientation | 用于没有为放入其中的组件分配行和列时,指定其排列方式 |
android:rowCount | 用于指定网格的最大行数 |
android:useDefaultMargins | 用于指定是否使用默认的边距 |
android:alignmentMode | 用于指定该布局管理器的对齐模式 |
android:rowOrderPreserved | 用于设置行边界显示的顺序和索引的顺序是否相同 |
android:columnOrderPreserved | 用于设置行边界显示的顺序和索引的顺序是否相同 |
<?xml version="1.0" encoding="utf-8"?>
<GridLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@mipmap/bg"
android:columnCount="6"
tools:context="com.mingrisoft.MainActivity" >
<!-- 第一行 -->
<ImageView
android:id="@+id/imageView1"
android:src="@mipmap/a1"
android:layout_gravity="end"
android:layout_columnSpan="4"
android:layout_column="1"
android:layout_row="0"
android:layout_marginRight="5dp"
android:layout_marginBottom="20dp"
/>
<ImageView
android:id="@+id/imageView2"
android:src="@mipmap/ico2"
android:layout_column="5"
android:layout_row="0"
/>
<!-- 第二行 -->
<ImageView
android:id="@+id/imageView3"
android:src="@mipmap/ico1"
android:layout_column="0"
android:layout_row="1"
/>
<ImageView
android:id="@+id/imageView4"
android:src="@mipmap/b1"
android:layout_row="1"
android:layout_marginBottom="20dp"
/>
<!-- 第三行 -->
<ImageView
android:id="@+id/imageView5"
android:src="@mipmap/a2"
android:layout_gravity="end"
android:layout_columnSpan="4"
android:layout_column="1"
android:layout_row="2"
android:layout_marginRight="5dp"
android:layout_marginBottom="20dp"
/>
<ImageView
android:id="@+id/imageView6"
android:src="@mipmap/ico2"
android:layout_column="5"
android:layout_row="2"
/>
<!-- 第4行 -->
<ImageView
android:id="@+id/imageView7"
android:src="@mipmap/ico1"
android:layout_column="0"
android:layout_row="3"
/>
<ImageView
android:id="@+id/imageView8"
android:src="@mipmap/b2"
android:layout_marginBottom="20dp"
android:layout_row="3"
/>
</GridLayout>
(6)绝对布局管理器(AbsoluteLayout):在android2.0被标记已过期