Android基础之七大布局(线性 | 表格 | 帧 | 相对 | 网格 | 绝对 | 约束)要点详解

目录

七大布局

声明方式

LinearLayout线性布局

TableLayout表格布局

FrameLayout帧布局

RelativeLayout相对布局

GridLayout网格布局

AbsoluteLayout绝对布局

ConstraintLayout约束布局

七大布局

声明方式

  • 使用XML文件描述界面布局
  • Java代码中通过调用方法进行控制
  • 我们既可以使用任何一种声明界面布局的方式,也可以同时使用两种方式
  • 建议尽量采用XML文件声明界面元素布局。在程序运行时动态添加界面布局会大大降低应用响应速度,但依然可以在必要时动态改变屏幕内容

LinearLayout线性布局

简介

  • 布局将它所包含的控件在线性方向上一次排列,方向分为 水平方向和数值方向。

属性介绍

XML属性

相关方法

说明

android:gravity

setGravity(int)

组件的对齐方式

支持top, left, right, center_vertical, fill_vertical, center_horizontal, fill_horizontal, center, fill, clip_vertical, clip_horizontal。

也可以同时指定多种对齐方式的组合

android:orientation

setOrientation(int)

组件的排列方式 "vertical" | "horizontal"

android:layout_gravity

该子元素在LinearLayout中的对齐方式

android:layout_weight

子元素在LinearLayout中所占的权重

TableLayout表格布局

简介

  • 继承自LinearLayout,本质上仍然是线性布局管理器
  • 每向TableLayout中添加一个TableRow就代表一行
  • 每向TableRow中添加一个一个子组件就表示一列

属性设置

XML属性

相关方法

说明

android:collapseColumns

setColumns(int, boolean)

设置需要被隐藏的列的序号,多个序号间用逗号分隔

android:shrinkColumns

setShrinkAllColumns(boolean)

设置需要被收缩的列的序号

android:stretchColumns

setStretchAllColumns(boolean)

设置允许被拉伸的列的序号

在表格布局中,可以为单元格设置如下三种行为方式:

	Shrinkable:该列的所有单元格的宽度可以被收缩,以保证该表格能适应父容器的宽度;
	Strentchable:该列所有单元格的宽度可以被拉伸,以保证组件能完全填满表格空余空间;
	Collapsed:如果该列被设置为Collapsed,那么该列的所有单元格会被隐藏;

FrameLayout帧布局

简介

  • 继承自ViewGroup组件,每个子组件占据一帧,这些帧会根据gravity属性执行自动对齐。

常用属性

XML属性

相关方法

说明

android:foreground

setForeground(Drawable)

设置该帧布局容器的前景图像

android:foregroundGravity

setForeGroundGraity(int)

定义绘制前景图像的gravity属性

RelativeLayout相对布局

常用属性

XML属性

相关方法

说明

android:gravity

setGravity(int)

android:ignoreGravity

setIgnoreGravity(int)

设置哪个组件不受gravity属性的影响

  • 为了控制该布局容器的各子组件的布局分布,RelativeLayout提供了一个内部类:RelativeLayout.LayoutParams
  • RelativeLayout.LayoutParams只能设为boolean的XML属性(android:layout_centerHorizontal | 设置该子组件是否位于布局容器的水平居中)
  • RelativeLayout.LayoutParams属性值为其他UI组件ID的XML属性(android:layout_toRightOf | 控制该子组件位于给出ID组件的右侧)

GridLayout网格布局

简介

  • 与之前的TableLayout有些相似,它把整个容器划分为rows × columns个网格,每个网格可以放置一个组件。
  • 性能及功能都要比tablelayout好,比如GridLayout布局中的单元格可以跨越多行,而tablelayout则不行,此外,其渲染速度也比tablelayout要快
  • GridLayout提供了setRowCount(int)和setColumnCount(int)方法来控制该网格的行和列的数量

常用属性

XML属性

相关方法

说明

android:alignmentMode

setAlignmentMode(int)

设置该布局管理器采用的对齐模式

android:columnCount

setColumnCount(int)

设置该网格的列数量

android:columnOrderPreserved

setColumnOrderPreserved(boolean)

设置该网格容器是否保留序列号

android:roeCount

setRowCount(int)

设置该网格的行数量

android:rowOrderPreserved

setRowOrderPreserved(boolean)

设置该网格容器是否保留行序号

android:useDefaultMargins

setUseDefaultMargins(boolean)

设置该布局管理器是否使用默认的页边距

  • 为了控制GridLayout布局容器中各子组件的布局分布,GridLayout提供了一个内部类:GridLayout.LayoutParams,来控制Gridlayout布局容器中子组件的布局分布

XML属性

说明

android:layout_column

设置该组件在GridLayout的第几列

android:layout_columnSpan

设置该子组件在GridLayout横向上跨几列

android:layout_gravity

设置该子组件采用何种方式占据该网格的空间

android:layout_row

设置该子组件在GridLayout的第几行

android:layout_rowSpan

设置该子组件在GridLayout纵向上跨几行

AbsoluteLayout绝对布局

简介

  • 即Android不提供任何布局控制,而是由开发人员自己通过X坐标、Y坐标来控制组件的位置
  • 每个组件都可指定如下两个XML属性:layour_x,layout_y
  • 绝对布局已经过时,不应使用或少使用

ConstraintLayout约束布局

简介

  • 约束布局减少了嵌套,可以使得界面的效率更高,故七大布局方法中,约束布局为人们所推崇
  • 同时具有Relative Layout和Linear Layout的优点、特性。功能强大
  • 可以在不嵌套view group的情况下实现非常庞大、复杂的布局。实现扁平化
  • 性能要比其他布局方式高
  • 可以有效地解决布局嵌套过多的问题

常用方法

XML属性

说明

app:layout_constraint**_to**Of

将所需视图的上/下/左/右/前/后与另一个视图的上/下/左/右/前/后对齐

app:layout_constraint**_bias

Horizontal 控件的水平偏移比例

Vertical 控件的垂直偏移比例

app:layout_constraintBaseline_toBaselineOf

基线与基线对齐

app:layout_constraintDimensionRatio="16:9"

设置控件的宽高比

不能设置控件的高度,只能设置0dp(match_constraint)

android:layout_width="0dp"

app:layout_constraintHorizontal_weight="1"

设置一组控件之间所占空间的比例

android:layout_width="match_contraint"

充满全部屏幕

需要把这一组控件的对应width或height设置为match_contraint

android:orientation="horizontal | vertical"

layout_constraintGuide_begin

layout_constraintGuide_end

layout_constraintGuide_percent

主要用于辅助布局,即类似为辅助线,横向的、纵向的

距离顶部/底部/顶部百分比

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
布局(FrameLayout):是一种简单的布局方式,所有的控件都放在同一个中,通过设置控件的位置和大小,来控制它们的显示效果。常用于只包含一个控件或者少量控件的情况,比如底部导航栏。 线性布局(LinearLayout):是一种按照线性方向(水平或垂直)排列控件的布局方式。可以通过设置权重和gravity属性,来控制子控件的相对位置和大小。常用于排列一组控件的情况,比如聊天记录。 相对布局(RelativeLayout):是一种通过相对位置关系排列控件的布局方式。可以通过设置控件之间的相对位置关系(比如上下左右等),来控制它们的显示效果。常用于布置复杂、层次比较多的页面,比如个人资料页面。 表格布局(TableLayout):是一种按照表格方式排列控件的布局方式。可以通过设置表格的行列数和单元格中的控件,来控制控件的显示效果。常用于排列一组数据的情况,比如课程表。 绝对布局(AbsoluteLayout):是一种通过设置控件的绝对位置和大小来排列控件的布局方式。不推荐使用,因为当屏幕尺寸发生变化时,控件的位置和大小也需要重新调整。 使用方法:在XML文件中定义布局方式,将控件添加到布局中,设置控件的位置、大小、相对位置等属性。可以通过代码动态修改控件的属性,在运行时实现更加灵活的布局效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值