Android中的6大布局管理器

发布时间:2025-12-09 22:20:26 浏览次数:14

文章目录

  • 6大布局管理器详解
    • 1. LinearLayout 线性布局管理器
    • 2. TableLayout 表格布局管理器
    • 3. GridLayout 网格布局管理器
    • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    • 4. AbsoulteLayout 绝对布局管理器
    • 5. RelativeLayout 相对布局管理器
    • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    • 6. FrameLayout帧式布局

为什么要使用布局管理器?

根据屏幕大小,管理容器内的控件,自动适配组件在手机屏幕中的位置

6大布局管理器详解

1. LinearLayout 线性布局管理器

2. TableLayout 表格布局管理器

Ⅰ. 表格布局继承自LinearLayout线性布局

Ⅱ. 表格布局用行、列方式来管理容器内的控件

Ⅲ. 表格布局不需要制定多少行列,布局内每添加一行TableRow表示添加一行,然后再在TableRow添加子控件,容器的列数由包含列数最多的行决定

Ⅳ. 重要属性说明

android:stretchColumns,为TableLayout容器里面设置属性,表示 被设置的这些列 可拉伸 (注意:TableLayout中列的索引从0开始)

android:shrinkColumns, 为TableLayout容器里面设置属性,表示 被设置的这些列 可收缩

android:layout_column, 在容器里面的控件设置属性,指定该控件在TableRow中的指定列

android:layout_span, 合并

<?xml version="1.0" encoding="utf-8"?><TableLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:stretchColumns="0,2"android:shrinkColumns="1"android:collapseColumns="2"><!-- 注意:第3列超出了屏幕大小,所以不显示 --><TableRow><Button android:text="第1行 第1列"/><Button android:text="第1行 第2列"/><Button android:text="第1行 第3列"/></TableRow><!-- 不用TableRow,直接使用控件占据一行 --><Button android:text="第2行 第1列:单独的Button,非TableRow"/><!-- android:layout_column 属性指定该组件到该行的指定列--><TableRow><Button android:text="第3行 指定到第2列" android:layout_column="1"/></TableRow><!-- layout_span 属性指定该组件占据多少列--><TableRow><Button android:text="第4行 第1列 指定占据2列空间...." android:layout_span="2"/></TableRow></TableLayout>

3. GridLayout 网格布局管理器

就是将布局划分为类似Excel一样有一定行数和列数并且排列整齐的单元格(单元格指代控件),然后通过跨行和跨列设置单个单元格大小

相关属性:
布局行数和列数
rowCount:行数
columnCount:列数
单元格操作
layout_row:子控件在布局的行数
layout_column:子控件在布局的列数
layout_rowSpan:跨行数
layout_columnSpan:跨列数

实现效果:

这个没什么说的直接上代码

<?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:padding="10dp"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><GridLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:columnCount="5"android:rowCount="7"><Buttonandroid:layout_width="65dp"android:layout_row="1"android:layout_column="0"android:text="MC" /><Buttonandroid:layout_width="65dp"android:layout_row="1"android:layout_column="1"android:text="MR" /><Buttonandroid:layout_width="65dp"android:layout_row="1"android:layout_column="2"android:text="MS" /><Buttonandroid:layout_width="65dp"android:layout_row="1"android:layout_column="3"android:text="M+" /><Buttonandroid:layout_width="65dp"android:layout_row="1"android:layout_column="4"android:text="M-" /><Buttonandroid:layout_width="65dp"android:layout_row="2"android:layout_column="0"android:text="←" /><Buttonandroid:layout_width="65dp"android:layout_row="2"android:layout_column="1"android:text="CE" /><Buttonandroid:layout_width="65dp"android:layout_row="2"android:layout_column="2"android:text="C" /><Buttonandroid:layout_width="65dp"android:layout_row="2"android:layout_column="3"android:text="±" /><Buttonandroid:layout_width="65dp"android:layout_row="2"android:layout_column="4"android:text="√" /><Buttonandroid:layout_width="65dp"android:layout_row="3"android:layout_column="0"android:text="7" /><Buttonandroid:layout_width="65dp"android:layout_row="3"android:layout_column="1"android:text="8" /><Buttonandroid:layout_width="65dp"android:layout_row="3"android:layout_column="2"android:text="9" /><Buttonandroid:layout_width="65dp"android:layout_row="3"android:layout_column="3"android:text="/" /><Buttonandroid:layout_width="65dp"android:layout_row="3"android:layout_column="4"android:text="%" /><Buttonandroid:layout_width="65dp"android:layout_row="4"android:layout_column="0"android:text="4" /><Buttonandroid:layout_width="65dp"android:layout_row="4"android:layout_column="1"android:text="5" /><Buttonandroid:layout_width="65dp"android:layout_row="4"android:layout_column="2"android:text="6" /><Buttonandroid:layout_width="65dp"android:layout_row="4"android:layout_column="3"android:text="*" /><Buttonandroid:layout_width="65dp"android:layout_row="4"android:layout_column="4"android:text="1/x" /><Buttonandroid:layout_width="65dp"android:layout_row="5"android:layout_column="0"android:text="1" /><Buttonandroid:layout_width="65dp"android:layout_row="5"android:layout_column="1"android:text="2" /><Buttonandroid:layout_width="65dp"android:layout_row="5"android:layout_column="2"android:text="3" /><Buttonandroid:layout_width="65dp"android:layout_row="5"android:layout_column="3"android:text="-" /><Buttonandroid:layout_width="65dp"android:layout_height="95dp"android:layout_row="5"android:layout_rowSpan="2"android:layout_column="4"android:text="=" /><Buttonandroid:layout_width="130dp"android:layout_row="6"android:layout_column="0"android:layout_columnSpan="2"android:text="0" /><Buttonandroid:layout_width="65dp"android:layout_row="6"android:layout_column="2"android:text="." /><Buttonandroid:layout_width="65dp"android:layout_row="6"android:layout_column="3"android:text="+" /></GridLayout></LinearLayout>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

4. AbsoulteLayout 绝对布局管理器

容器管理容器内控件的位置大小,开发人员通过指定X、Y坐标指定组件的位置

android:layout_x,指定控件在容器中的 x 坐标值
android:layout_y,指定控件在容器中的 y 坐标值

实际应用中一般不适用AbsoulteLayout,因为应用该APP的手机屏幕大小,分辨率肯定会不同

实现效果:

<?xml version="1.0" encoding="utf-8"?><AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" ><TextView android:id="@+id/tv1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:height="200dp"android:width="200dp"android:layout_x="100dp"android:layout_y="80dp"android:textSize="50sp"android:textColor="#ffffff"android:background="#680000"/><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:height="200dp"android:width="200dp"android:layout_x="10dp"android:layout_y="250dp"android:textSize="50sp"android:textColor="#680000"android:background="#00cc88"android:text="绝对布局我在这"/></AbsoluteLayout>

5. RelativeLayout 相对布局管理器

参考博客:安卓学习:相对布局

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

6. FrameLayout帧式布局


上述代码:

<?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:gravity="center"android:orientation="vertical"><FrameLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/tvBottom"android:layout_width="300dp"android:layout_height="300dp"android:layout_gravity="center"android:background="#ff0000"android:text="最底层"/><TextViewandroid:id="@+id/tvMiddle"android:layout_width="200dp"android:layout_height="200dp"android:layout_gravity="center"android:background="#0000ff"android:text="中间层"/><TextViewandroid:id="@+id/tvTop"android:layout_width="100dp"android:layout_height="100dp"android:layout_gravity="center"android:background="#00ff00"android:text="顶层"/></FrameLayout></LinearLayout>
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477