Android布局管理器详解(源码及图例)

本文深入解析六种Android布局管理器:线性布局、相对布局、表格布局、网格布局、帧布局及约束布局的特点与使用方法,助您掌握高效界面设计技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.线性布局管理器(LinearLayout)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="15dp"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".MainActivity">
    <!--线性布局关键设置:-->
    <!--android:gravity="center" 组件居中-->
    <!--android:orientation="horizontal"    线性布局横向排列-->
    <!--android:orientation="vertical"    线性布局垂直排列-->

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮1"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮2"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮3"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮4"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮5"/>

</LinearLayout>

2.相对布局管理器(RelativeLayout)

 

...................

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <!--android:layout_width="wrap_content" 按钮宽度取决于内容,height等同-->
    <!--android:layout_centerInParent="true" 于父窗口居中-->
    <TextView
        android:id="@+id/label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="40sp"
        android:text="标   签"
        android:layout_centerInParent="true"/>

    <!--android:layout_above="@id/label"    于"@id/hello"的上方-->
    <!--android:layout_below="@id/label"    于"@id/hello"的下方-->
    <!--android:layout_toStartOf="@id/label"    button1右边与"@id/hello"左边平齐-->
    <!--android:layout_toEndOf="@id/label"    button1左边与"@id/hello"右边平齐-->
    <!--android:layout_marginTop="15dp" 头顶距"@id/hello" 15dp-->
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text="按钮"
        android:layout_below="@id/label"
        android:layout_toStartOf="@id/label"/>


</RelativeLayout>

3.表格布局管理器(TableLayout)

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="15dp"
    android:stretchColumns="0,1,2,3,4"
    tools:context=".MainActivity">
    <!--android:collapseColumns="1" 隐藏第二列-->
    <!--android:stretchColumns="0,1,2" 拉伸1 2 3列-->
    <!--android:shrinkColumns="0" 允许收缩-->

    <TableRow>
        <TextView android:text="  1  " android:textSize="30sp"/>
        <TextView android:text="  2  " android:textSize="30sp"/>
        <TextView android:text="  3  " android:textSize="30sp"/>
        <TextView android:text="  4  " android:textSize="30sp"/>
        <TextView android:text="  5  " android:textSize="30sp"/>
    </TableRow>

    <TableRow>
        <TextView android:text="  6  " android:textSize="30sp"/>
        <TextView android:text="  7  " android:textSize="30sp"/>
        <TextView android:text="  8  " android:textSize="30sp"/>
        <TextView android:text="  9  " android:textSize="30sp"/>
        <TextView android:text="  10  " android:textSize="30sp"/>
    </TableRow>
</TableLayout>

4.网格布局管理器(GridLayout)

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="15dp"
    android:layout_gravity="fill"
    tools:context=".MainActivity">

    <!--
        第一行第一列
        android:layout_column="0"
        android:layout_row="0"
    -->
    <Button
        android:layout_column="0"
        android:layout_row="0"
        android:text="1"/>

    <!--
        第一行第二列
        android:layout_column="1"
        android:layout_row="0"
    -->
    <Button
        android:layout_column="1"
        android:layout_row="0"
        android:text="2"/>

    <!--
        第二行第二列
        android:layout_column="1"
        android:layout_row="0"
    -->
    <Button
        android:layout_column="1"
        android:layout_row="1"
        android:text="3"/>

    <!--
        占两行:android:layout_rowSpan="2"
        按钮拉伸:android:layout_gravity="fill_vertical"
    -->
    <Button
        android:layout_column="2"
        android:layout_row="1"
        android:layout_rowSpan="2"
        android:layout_gravity="fill_vertical"
        android:text="4"/>

    <Button
        android:layout_column="0"
        android:layout_row="2"
        android:layout_columnSpan="2"
        android:layout_gravity="fill_horizontal"
        android:text="5"/>

    <Button
        android:layout_row="3"
        android:layout_column="0"
        android:layout_columnSpan="3"
        android:layout_gravity="fill_horizontal"
        android:text="6" />

</GridLayout>

5.帧布局管理器(FrameLayout)

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <!--
        gravity="center|top":自身内容顶部居中
        layout_gravity="center":该组件位于父窗口居中
    -->
    <TextView
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:text="1111"
        android:background="#2196F3"
        android:gravity="center|top"
        android:layout_gravity="center"/>

    <TextView
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:text="2222"
        android:background="#00BCD4"
        android:gravity="center|top"
        android:layout_gravity="center"/>

    <TextView
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:text="3333"
        android:background="#4CAF50"
        android:gravity="center|top"
        android:layout_gravity="center"/>
</FrameLayout>

6.约束布局管理器(ConstraintLayout )

相信当我们进行布局的时候,使用最多的应该是LinearLayout与RelativeLayout。而对于复杂一点的布局来说,他们之间的嵌套使用就最正常不过了。所以为了减少不必要的嵌套布局,Google特意开发的ConstraintLayout。它同时支持LinearLayout与RelativeLayout的所用特性。同时它完全通过约束来减少布局的嵌套。意思就是基本上最外层只需要一个ConstraintLayout节点就可以了。--------此段关于ConstraintLayout 的介绍摘自https://segmentfault.com/a/1190000014876944

待续....


7.绝对布局管理器(AbsoluteLayout)

待续...

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值