Android-Ui常见的几种布局管理器

本文详细介绍了Android中常见的三种布局管理器:线性布局(LinearLayout)、相对布局(RelativeLayout)和帧布局(FrameLayout)。线性布局按照垂直或水平方向排列子视图,相对布局允许视图相对于父容器或兄弟视图定位,帧布局则允许子视图在容器中自由堆叠。每个布局的特点和使用场景都有所不同,理解这些布局有助于构建灵活的Android用户界面。

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

一、UI控件概述

1.1 UI(User Interface):用户界面

Android提供了大量功能丰富的UI组件,开发者只要按一定规律把这些UI组件组合起来,再配合Android提供的事件响应机制,这样就达到了图形界面可响应用户的交互操作了。

1.2既然UI组件这么重要,在Android中UI组件整体的结构是怎样的呢?

常用的UI一般分为两类:一类是用于显示数据的组件称为基本控件类,一类是用于容纳组件的组件称为容器控件类,就是用来当容器的组件

在Android中,所有UI组件都称为View,这是最顶层的一个父类,就像我们学JAVA里面的Object类是所有类的父类一样,比如说我们官方文档的这张图:


一个ViewGroup是一个容器组件,它下面又可以包含另一个容器组件,又可以包含单独的视图,然后这个组里又可以包含其他的视图。这整体的结构就像是一种包含的关系,最上层是爷爷,爸爸,兄弟,还有孙子,实际上这就像我们类里的继承关系一样。OK,那大家要记住一点是所有UI组件的父类都称之为View,这是一个类。

View类最常用的子类如下,我们把这些常用的子类分为两种:基本控件类容器控件类

 基本控件类:

TextView

EditText

Button

RadioButton

CheckBox

ImageView

ImageButton

ViewGroup

ViewGroup类是抽象类,主要用来当容器布局使用,它有以下几种常用的子类:

LinearLayout

RelativeLayout

FrameLayout

Spinner

ListView

GridView

二、布局管理器之---线性布局(LinearLayout)

布局为UI提供了一个可视化的结构,比如对于一个activity或者app widget的UI可以用两种方式声明布局:

1.在XML中声明UI元素

2.在运行时实例化布局元素,就是用代码直接去写

Android推荐使用XML布局文件来定义用户界面,而不是使用JAVA代码来开发用户界面,实际上不管用哪种方式,本质是一样的,控制UI组件的XML属性还有对应的方法

       线性布局是指在该管理器下的所有控件的排列是线性排列,根据排列的方向不同可以分为水平方向和垂直方向来个方向。由属性:android:orientation来确定线性布局的方向。

常用属性:

 

属性

描述

android:id

这是布局的唯一标识ID

android:gravity

内部对齐(容器内全部子控件均遵循该对齐方式) right, bottom, center(水平居中,垂直居中,正居中)

android:orientation

 

这种安排指定的方向,可以用“horizontal”表示为一排,“vertical”表示一列。默认是水平的。

android:layout_width

布局宽的属性:

"fill_parent":指定子组件的高度,宽度与父容器组件的高度,宽度相同(实际上还要减去填充的空白距离)

        "match_parent":与fill_parent完全相同,从安卓2.2开始推荐使用这个属性来替代fill_parent

        wrap_content:指定子组件的大小恰好能包裹它的内容即可

android:layout_height

布局高的属性

android:layout_gravity

外部对齐(针对某一个单独的子控件进行对齐,其他兄弟控件不受影响)......属性组合使用“|”

android:layout_weight

权重(比喻成体重,代表子控件在同一方向上所占比重,注意:当使用该属性时,对应宽/高需要设置为“0dp”)

1.控件的width/height的属性必须保持一致

2. width/height="0dp"  权重值越大,所占空间越大(正比例)

3. width/height="match_parent" 权重值越大,所占空间越小 (反比例)

4. width/height="wrap_content"  权重值越大,所占空间越大(正比例)

 

注意:

width/height不为“0dp“时,系统会优先考虑权重值小的组件

三、布局管理器之---相对布局(RelativeLayout)

RelativieLayout:相对布局内的元素的位置总是由父容器或兄弟组件的位置所决定,所以称为相对布局。可以相对父容器/兄弟控件位置任意摆放,布局灵活,如下图所示:




注意:在相对布局中,当有多个布局或者控件时,被选做参照的对象必须是要指明Id属性,并且也能选择一个类型相同的子布局作为参照对象,类型不同的布局之间不能选为参照对象。

android:layout_marginLeft           左侧外边距(子控件使用,其他兄弟控件不受影响)

android:layout_marginRight          右侧..

android:layout_marginTop           顶部..

android:layout_marginBottom       底部..

android:layout_margin                四周..

android:paddingLeft              左侧内边距(容器使用,容器内全部子控件均受到影响。该属性同样可以适用于TextView等控件,使控件和控件内的内容有内间距)

android:paddingRight            右侧..

android:paddingTop              顶部..

android:paddingBottom               底部..

android:padding                   四周

四、     布局管理器之---帧布局(FrameLayout)

FrameLayout:最简单的布局管理器。会根据元素的书写顺序,依次加入到帧布局中,后面的元素会覆盖前面的元素,默认是在布局中的左上角。(应用场景,两个按钮,点击第一个时第二个显示第一个隐藏,点击第二个时第一个显示第二个隐藏)

有两个常用属性:

android:foreground:设置该帧布局容器的前景图像。该图像永远置于帧布局的最上端,不会被他的子组件覆盖。

android:foregroundGravity:设置前景图像显示的位置

<!-- 帧布局,里面可以放很多元素,但是后面的元素会遮盖前面的元素-->

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值