实用指南:Android 常见界面布局详解

news/2025/10/26 11:39:25/文章来源:https://www.cnblogs.com/slgkaifa/p/19166617

实用指南:Android 常见界面布局详解

一、引言

        为适配不同界面风格,Android系统提供了多种界面布局。其中常用的有LinearLayout(线性布局)、TableLayout(表格布局)、FrameLayout(帧布局)、ConstraintLayout(约束布局),此外,RelativeLayout(相对布局)虽已过时,但因使用范围广仍需掌握。本文将对这些常见界面布局进行详细讲解。

二、常见界面布局详解

(一)LinearLayout(线性布局)

1. 基本概念

        LinearLayout(线性布局)通常指定布局内的子控件水平或垂直排列。

2. XML基本语法格式

3. 关键属性
  • android:orientation:可选值为vertical和horizontal。
    • vertical:表示LinearLayout布局内控件依次从上到下垂直排列。
    • horizontal:表示LinearLayout布局内控件依次从左到右水平排列。
  • android:layout_weight:该属性被称为权重,通过设置该属性值,可使布局内的控件按照权重比显示大小,在进行屏幕适配时起到关键作用。
  • android:gravity:设置布局内控件的对齐方式,常见可选值如下表所示:

属性名称

功能描述

top

将内容放在视图的顶部,不改变其大小。

bottom

将内容放在视图的底部,不改变其大小。

left

将内容放在视图的左侧,不改变其大小。

right

将内容放在视图的右侧,不改变其大小。

center_vertical

将内容在垂直方向上居中对齐,不改变其大小。

center_horizontal

将内容在水平方向上居中对齐,不改变其大小。

center

将内容在水平和垂直方向上都居中对齐,不改变其大小。

fill_vertical

必要的时候增加对象的纵向大小,以完全充满其容器(垂直方向填充)。

fill_horizontal

必要的时候增加对象的横向大小,以完全充满其容器(水平方向填充)。

fill

必要的时候增加对象的横纵向大小,以完全充满其容器。

(二)TableLayout(表格布局)

1. 基本概念

TableLayout(表格布局)采用行、列的形式来管理控件,它不需要明确声明包含多少行、多少列,而是通过在TableLayout布局中添加TableRow布局或控件来控制表格的行数,在TableRow布局中添加控件来控制表格的列数。

2. XML基本语法格式
UI控件UI控件......
3. 关键属性

TableLayout继承自LinearLayout,完全支持LinearLayout所支持的属性,此外还有其他常用属性:

属性名称

功能描述

android:stretchColumns

设置可被拉伸的列

android:shrinkColumns

设置可被收缩的列

android:collapseColumns

设置可被隐藏的列

表格布局中控件的常用属性:

属性名称

功能描述

android:layout_column

设置该控件显示的位置

android:layout_span

设置该控件占据几列,默认为1列

        需要注意的是,在TableLayout布局中,列的宽度由该列中最宽的那个单元格(控件)决定,整个表格布局的宽度则取决于父容器的宽度。

(三)FrameLayout(帧布局)

1. 基本概念

        FrameLayout(帧布局)用于在屏幕上创建一块空白区域,添加到该区域中的每个子控件占一帧,这些帧会一个一个叠加在一起,后加入的控件会叠加在上一个控件上层。默认情况下,帧布局中的所有控件会与左上角对齐。

2. XML基本语法格式

3. 特殊属性

除通用属性外,帧布局还有两个特殊属性:

属性名称

功能描述

android:foreground

设置帧布局容器的前景图像(始终在所有子控件之上)

android:foregroundGravity

设置前景图像显示的位置

(四)ConstraintLayout(约束布局)

1. 基本概念

        ConstraintLayout(约束布局)是Android Studio2.2新添加的布局。与其他界面布局相比,它不太适合使用XML代码的方式编写布局,但非常适合使用可视化的方式编写界面布局。可视化操作的背后仍是使用XML代码实现,这些代码由Android Studio根据操作自动生成。

2. 新特性
  • 相对定位:相对定位是在ConstraintLayout中创建布局的基本构建方法之一。相对定位即一个控件相对于另一个控件进行定位,ConstraintLayout布局中的控件可以在横向和纵向上以添加约束关系的方式进行相对定位,其中,横向边包括left、start、right、end,纵向边包括top、bottom、baseline(文本底部的基准线)。每一条边(top、bottom、baseline、left、start、right、end)都可以与其他控件形成约束,形成相对定位关系的属性如下表所示:

属性名称

功能描述

layout_constraintLeft_toLeftOf

控件的左边与另外一个控件的左边对齐

layout_constraintLeft_toRightOf

控件的左边与另外一个控件的右边对齐

layout_constraintRight_toLeftOf

控件的右边与另外一个控件的左边对齐

layout_constraintRight_toRightOf

控件的右边与另外一个控件的右边对齐

layout_constraintTop_toTopOf

控件的上边与另外一个控件的上边对齐

layout_constraintTop_toBottomOf

控件的上边与另外一个控件的底部对齐

layout_constraintBaseline_toBaselineOf

控件间的文本内容基准线对齐

layout_constraintStart_toEndOf

控件的起始边(左边)与另外一个控件的尾部(右边)对齐

layout_constraintStart_toStartOf

控件的起始边与另外一个控件的起始边对齐

layout_constraintEnd_toStartOf

控件的尾部与另外一个控件的起始边对齐

layout_constraintEnd_toEndOf

控件的尾部与另外一个控件的尾部对齐

例如,将控件B左侧的边约束到控件A右侧的边,可将控件B定位到控件A的右侧,这里的约束可理解为边的对齐。

  • 居中定位和倾向:在ConstraintLayout布局中,两个控件之间通过添加约束的方式不仅可以确定控件的相对位置,还可以确定控件在父布局(ConstraintLayout)中的相对位置。在相同方向上(横向或纵向),控件的左右两边或上下两边同时在ConstraintLayout中添加约束,则控件在添加约束的方向上居中显示。例如,设置控件在父布局中与父布局左边对齐,与父布局右边也对齐,此时控件在父布局中横向居中显示。

在横向或纵向方向上,添加的约束相反时,默认控件是居中的,当添加的两个约束的力大小不等时,就会产生倾向,设置倾向的属性如下表所示:

属性名称

功能描述

layout_constraintHorizontal_bias

横向的倾向

layout_constraintVertical_bias

纵向的倾向

需要注意的是,如果ConstraintLayout布局中的控件在居中方向(横向或者纵向)上和父布局(ConstraintLayout)的尺寸一致,此时该方向的居中约束和倾向没有意义。

  • Chain(链):Chain(链)是一种特殊的约束,能对一组水平或竖直方向互相关联的控件进行统一管理。一组控件通过一个双向的约束关系链接起来,就能形成一个Chain。

Chain中的第一个控件称为头控件,头控件可以通过layout_constraintHorizontal_chainStyle和layout_constraintVertical_chainStyle属性设置水平链条和竖直链条的样式,其属性值及功能如下:
- spread:设置控件在布局内平均分布,为Chain的默认样式。
- spread_inside:设置两端的控件与父布局无间距显示,其他的控件将在剩余的空间内采用spread样式进行布局。
- packed:设置Chain中的所有控件合并在一起后在布局内居中显示。

ConstraintLayout布局中,当控件宽或者高的属性设置为0dp时,Chain的三种样式可以搭配layout_constraintHorizontal_weight属性形成Weighted Chain的样式。packed可以搭配layout_constraintHorizontal_bias属性控制Chain与父容器的间距,从而形成Packed Chain With Bias样式,即Chain共有五种样式。

3. 约束条件相关

        如需在ConstraintLayout中定义某个视图的位置,需要为该视图添加至少一个水平约束条件和一个垂直约束条件。每个约束条件均表示与其他视图、父布局或隐形引导线之间连接或对齐方式,定义了视图在竖轴或者横轴上的位置。每个视图在每个轴上都必须至少有一个约束条件,但通常情况下会需要更多约束条件。

        当将视图拖放到布局编辑器中时,即使没有任何约束条件,它也会停留在放置的位置,这仅为方便编辑。当在设备上运行布局时,如果视图没有任何约束条件,则会在位置[0,0](左上角)处进行绘制。例如,布局在编辑器中看起来完美,但视图C上没有垂直约束条件,在设备上绘制此布局时,虽然视图C与视图A的左右边缘水平对齐,但由于没有垂直约束条件,它会显示在屏幕顶部。

        尽管缺少约束条件不会导致出现编译错误,但布局编辑器会将缺少约束条件作为错误显示在工具栏中。如需查看错误和其他警告,可点击Show Warnings and Errors。为帮助避免出现缺少约束条件这一问题,布局编辑器会使用Autoconnect和Infer Constraints功能自动添加约束条件。

4. 调整视图尺寸

        可使用角手柄来调整视图的尺寸,但这会对尺寸进行硬编码,从而使视图不会针对不同的内容或屏幕尺寸进行调整。如需选择其他尺寸模式,可点击视图,然后打开编辑器右侧的Attributes窗口。

Attributes窗口顶部附近的视图检查器中包括若干布局属性的控件,此属性仅适用于ConstraintLayout中的View。可通过点击相关符号来更改高度和宽度的计算方式,这些符号代表的尺寸模式及功能如下:

  • Fixed:可在下方的文本框中指定具体维度,也可在编辑器中调整视图尺寸。
  • Wrap Content:视图仅在需要时扩展以适应其内容。
  • Match Constraints:视图会尽可能扩展,以满足每侧的约束条件(在考虑视图的外边距之后)。

将layout_constrainedWidth设置为true可让水平尺寸发生更改,以遵循约束条件。默认情况下,设置为WRAP_CONTENT的widget不受约束条件的限制。

5. 对齐方式

        可将一个视图的边缘与另一视图的同一边对齐,例如,B的左侧与A的左侧对齐。如果要与视图中心对齐,请对两侧创建约束条件。

        还可以通过从约束布局向内拖动视图来偏移对齐量,例如,B的偏移对齐为24dp,偏移量由受约束视图的外边距定义。也可以选择要对齐的所有视图,然后点击工具栏中的Align图标以选择对齐类型。

6. 引导线约束

        可添加垂直或水平的引导线来约束视图,应用用户看不到该引导线。可根据相对于布局边缘的dp单位或百分比在布局中定位引导线。

        如需创建引导线,可点击工具栏中的Guidelines图标,然后点击Add Vertical Guideline或Add Horizontal Guideline。拖动虚线可将其重新定位,然后点击引导线边缘的圆圈以切换测量模式。

7. 屏障约束

        与引导线类似,屏障是一条隐藏的线,可用来约束视图,但屏障不会定义自己的位置,相反,屏障的位置会随着其中所含视图的位置而移动。如果希望将视图限制到一组视图而不是某个特定视图,这非常有用。例如,视图C被约束在屏障的右侧,该屏障设置为视图A和视图B的"end"侧(或从左至右布局中的右侧),屏障会根据视图A或视图B的右侧是否为最右侧来移动。

如需创建屏障,可按以下步骤操作:

  1. 点击工具栏中的Guidelines图标,然后点击Add Vertical Barrier或Add Horizontal Barrier。
  2. 在Component Tree窗口中,选择要放入屏障内的视图,然后将其拖动到屏障组件中。
  3. 在Component Tree中选择障碍,打开Attributes窗口,然后设置barrierDirection。

现在,就可以从另一个视图创建屏障约束。还可以将屏障内的视图约束到屏障,这样,可使屏障中的所有视图相互对齐,即使不知道哪个视图最长或最高。也可以在屏障内添加引导线,以确保屏障的位置"最小"。

8. 圆形定位

可以相对于另一个小部件中心以一定角度和距离约束小部件中心,这允许将小部件定位在圆上。可使用以下属性:

  • layout_constraintCircle:引用另一个小部件ID
  • layout_constraintCircleRadius:到其他小部件中心的距离
  • layout_constraintCircleAngle:小部件应该处于哪个角度(以度为单位,从0到360)

示例代码:

(五)RelativeLayout(相对布局)

1. 基本概念

RelativeLayout通过相对定位的方式指定子控件的位置。

2. XML基本语法格式

3. 子控件属性

在RelativeLayout中的子控件具备一些属性,用于指定子控件的位置:

属性名称

功能描述

android:layout_centerInParent

设置当前控件位于父布局的中间位置

android:layout_centerVertical

设置当前控件位于父布局的垂直居中位置

android:layout_centerHorizontal

设置当前控件位于父控件的水平居中位置

android:layout_above

设置当前控件位于某控件上方

android:layout_below

设置当前控件位于某控件下方

android:layout_toLeftOf

设置当前控件位于某控件左侧

android:layout_toRightOf

设置当前控件位于某控件右侧

android:layout_alignParentTop

设置当前控件是否与父控件顶端对齐

android:layout_alignParentLeft

设置当前控件是否与父控件左边对齐

android:layout_alignParentRight

设置当前控件是否与父控件右边对齐

android:layout_alignParentBottom

设置当前控件是否与父控件底部对齐

android:layout_alignTop

设置当前控件的上边界与某控件的上边界对齐

android:layout_alignBottom

设置当前控件的下边界与某控件的下边界对齐

android:layout_alignLeft

设置当前控件的左边界与某控件的左边界对齐

android:layout_alignRight

设置当前控件的右边界与某控件的右边界对齐

三、按钮相关属性

属性名

简要描述

style

指定按钮的样式,可引用定义好的样式资源来设置外观等整体风格

stateListAnimator

用于定义按钮在不同状态(如按下、选中)时的动画效果

onClick

指定按钮点击时调用的方法名,在Activity等中需定义对应的方法处理点击事件

elevation

设置按钮的z轴高度,以产生阴影效果,模拟立体层次感

insetLeft

按钮内容左侧的内边距,控制内容与按钮左侧边界的距离

insetRight

按钮内容右侧的内边距,控制内容与按钮右侧边界的距离

insetTop

按钮内容顶部的内边距,控制内容与按钮顶部边界的距离

insetBottom

按钮内容底部的内边距,控制内容与按钮底部边界的距离

background

设置按钮的背景,可以是颜色、Drawable资源等

backgroundTint

对背景进行色调染色,改变背景颜色的色调

backgroundTintMode

背景色调染色的模式,如叠加、混合等模式

icon

设置按钮上显示的图标,可以引用Drawable资源

iconPadding

图标与按钮内容之间的内边距

iconTint

对图标进行色调染色,改变图标颜色的色调

iconTintMode

图标色调染色的模式

strokeColor

设置按钮边框的颜色

strokeWidth

设置按钮边框的宽度

cornerRadius

设置按钮的圆角半径,使按钮边缘呈圆角

rippleColor

设置按钮点击时的水波纹效果颜色

text

按钮上显示的文本内容

contentDescription

为视力障碍用户提供的按钮内容描述,用于辅助功能

textAppearance

指定按钮文本的外观样式,如字体、大小、颜色等

alpha

设置按钮的透明度,取值范围0 - 1,0为完全透明,1为完全不透明

总结

        本文档梳理了 Android 五种核心界面布局及按钮属性。常用布局中,LinearLayout 按水平 / 垂直排列控件,借权重适配屏幕;TableLayout 以行列管理控件,列宽由列内最宽控件定;FrameLayout 为帧叠加模式,子控件默认左上角对齐。

        ConstraintLayout 适配可视化编写,有相对定位、居中定位与倾向、Chain 约束等特性,还含引导线、屏障等辅助工具。RelativeLayout 虽过时,但可通过属性实现相对定位仍需了解。文档还补充了按钮样式、交互等多维度属性,为 Android 界面开发提供参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/946681.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

251026

目录JT-JY10T4S1-1JT-JY10T4S1-2 JT-JY10T4S1-1ThDks, good morning, is that Mr.ThDk? Speaking, how can i help? I have got quite few things which need painting and fixing in the flat, and i wonder whethe…

2025 年 10 月食堂厨房设备厂家最新推荐,聚焦资质、案例、售后的食堂场景深度解读

食堂厨房设备直接关系到师生、职工的饮食安全与就餐效率,其资质合规性、食堂场景适配性与售后保障能力尤为关键。据中国教育后勤协会 2025 年 10 月发布的《校园食堂设备质量报告》显示,26% 的食堂设备因资质不全存在…

Android下加载libUnreal.so文件

Android下加载libUnreal.so文件Android 下动态加载so库 具体有两种方式: (1)调用 load(String filename) 方法System.load("/data/data/com.example.mygame/files/libUnreal.so"); // 传递进去的是全路径…

2025 年 10 月不锈钢厨房设备厂家最新推荐,产能、专利、环保三维数据透视

不锈钢厨房设备凭借耐用、易清洁的特性,成为餐饮、酒店、食堂等场景的核心选择,但其产能稳定性、技术专利储备与环保合规性,直接影响采购方的供应保障与长期运营成本。据中国五金制品协会不锈钢制品分会 2025 年 10…

DINO版本进化

1.蒸馏 KD 与 自蒸馏 SD普通蒸馏,是有监督(软标签),老师是外部预训练的大模型自蒸馏,无监督,老师是 自己的历史版本EMA2.EMA机制有一个问题,如果学生和老师输出的内容是一致的,那学生什么也学不到。所以老师网…

2025 年 10 月餐饮厨房设备厂家最新推荐,实力品牌深度解析采购无忧之选!

餐饮厨房设备作为餐饮企业运营的核心基础设施,其质量与服务直接关系到食品安全、运营效率及成本控制。据中国烹饪协会 2025 年 10 月发布的《餐饮行业设备采购白皮书》显示,近一年餐饮企业因设备质量问题产生的额外支…

sometime some time sometimes

sometime is an unspecified point in timesome time is a period/span of timesometimes is an adverb about frequency英语国家也有自己的 的地得

基于深度学习神经网络协同过滤模型(NCF)的视频推荐体系

基于深度学习神经网络协同过滤模型(NCF)的视频推荐体系pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

关于容斥原理

简单的不说了,直接开题。 P1450 [HAOI2008] 硬币购物 题意 有 \(c1, c2, c3, c4\) 四种面值的硬币,询问多次,给你每个硬币最多有多少个,问凑出 \(S\) 面值的方案。 分析 考虑一个 \(f_i\) 是 i 号硬币不满足条件的…

可变字符串

可变字符串StringBuffer:可变长字符串,运行效率慢,线程安全StringBuilder:可变长字符串,运行效率吧快,线程不安全 package String; /*** StringBuffer和StrinBulider的使用* 和String的区别(1)比String效率高(…

给安卓设置背景色的时候保持默认按钮样式(关于使用setBackgroundColor导致丢失默认按钮样式的问题)

给安卓设置背景色的时候保持默认按钮样式(关于使用setBackgroundColor导致丢失默认按钮样式的问题)核心apiButton.setBackgroundTintList(ColorStateList);void initPatterns(LinearLayout PatternsRoot){for(int i=0;…

分片上传与断点续传实现详解

分片上传与断点续传实现详解 在现代Web应用中,用户经常需要上传大文件,如视频、压缩包等。传统的文件上传方式在面对大文件时容易出现超时、失败等问题,而且一旦上传中断就需要重新上传整个文件,浪费时间和带宽。为…

欧拉定理

欧拉定理 给定整数 \(a,m\),其中 \(\gcd(a,m)=1\),求证: \[a^{\phi(m)} \equiv 1 \pmod m \]其中 \(\phi(m)\) 是欧拉函数,表示 \(\le m\) 中与 \(m\) 互质的数的个数。 欧拉定理证明 考虑模 \(m\) 的一个简化剩余…

Kanass入门到实战(6) - 如何进行缺陷管理 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

手把手在 Linux 上安装 Docker 与 Docker Compose(包含 Ubuntu、CentOS 等 11 个发行版)

从零开始:按命令实操在 11 个主流 Linux 发行版(含 Ubuntu、CentOS、Debian 等)上安装 Docker 与 Docker Compose。支持 11 种主流发行版:OpenCloudOS、Anolis OS (龙蜥)、Alinux (阿里云)、Fedora、Rocky Linux、…

2025 年 10 月展示柜厂家最新推荐,精准检测与稳定性能深度解析!

展示柜的稳定性能直接关系到零售商家的日常运营效率与商品陈列效果,为助力商家筛选出经过精准检测、性能可靠的展示柜厂家,2025 年 10 月,中国商业设施协会联合国家轻工业产品质量监督检测中心,开展展示柜行业专项…

数据处理方法汇总

1.层次化 K-means (Hierarchical K-means)不直接把数据分成k个簇,第一层先分k1个簇,第二层每个大簇分为k2个小簇,以此类推,形成聚类树2.平衡采样对每类样本按比例采样3.检索式筛选数据用分类模型,找到数据池和种…

2025 年 10 月展示柜厂家最新推荐,技术实力与市场口碑深度解析!

在零售行业竞争日益激烈的当下,展示柜不仅是商品陈列工具,更成为品牌竞争力的重要体现。为帮助商家精准识别具备核心技术与良好市场口碑的展示柜厂家,2025 年 10 月,中国零售业协会联合全国商业设施质量监督检验中…

一些疑问

1、是否要减肥、如何增肌,增重对增肌的影响,脂肪可以转换为肌肉吗,人在饥饿的时候会先消耗肌肉还是脂肪,怎么保证减肥的时候肌肉不会被消耗,如果要减肥的话饮食怎么搭配,减肥的时候也会瘦脸吗,如何瘦脸 2、为什…

2025 年 10 月外墙涂料厂家最新推荐,高性能与可靠性兼具的优质品牌

2025 年我国外墙涂料行业产品合格率虽提升至 89%,但仍有 11% 的产品存在耐候性差、易脱落等性能问题,给建筑安全与外观维护带来隐患。为帮助用户筛选高性能、高可靠的优质品牌,本次测评联合中国涂料工业协会,依据《…