android七大布局知识点整理

Android七大布局

七大布局分别为:

  1. 线性布局(LinearLayout)
  2. 相对布局(RelativeLayout)
  3. 帧布局(FrameLayout)
  4. 表格布局(TableLayout)
  5. 绝对布局(AbsoluteLayout)
  6. 网格布局(GridLayout)
  7. 约束布局(ConstraintLayout)

基本概念

把界面中的控件按照某种规律摆放在制定的位置,解决应用程序在不同机器上的显示问题,其实现主要有两种方式:
1.代码:布局文件对应的java类都是ViewGroup类的子类
2.xml配置文件:所有的布局文件都是放在res/layout文件夹中

基本属性

layout_width 与 layout_height
设置布局文件的长度和宽度,常用取值为:wrap_content、fill_parent、match_parent

dp逻辑长度单位,在160dpi屏幕上,1dp=1px=1/160英寸。随着密度变化,对应的像素数量也变化,但并没有直接的变化比例。 dpi:屏幕上有多少个像素点。
dip与dp相同,多用于google的实例中
sp与dp类似,但是可以根据用户的字体大小首选项进行缩放
pt对象放其容器右侧
mm毫米,屏幕的物理尺寸
in英寸,屏幕的物理尺寸。每英寸等于2.54厘米
px像素

dp的定义原理和dpi,ppi,px,pt,sp之间的区别

gravity与layout_gravity
gravity设置控件中内容相对于该控件的对齐方式,layout_gravity设置该控件相对于父控件的对齐方式

top对象放其容器顶部
bottom对象放其容器底部
left对象放其容器左侧
right对象放其容器右侧
center对象居中
center_vertical对象纵向居中
center_horizontal对象横向居中
fill对象整体填充
fill_vertical对象纵向填充
fill_horizontal对象横向填充

layout_marginTop 与 layout_marginBottom
当前视图上、下边缘到某条基线的距离,只能取固定值

1.线性布局(LinearLayout)

线性布局控制其中的控件按照横向或纵向方式排列,并且线性布局不会换行,当控件排列到窗体边缘,后面的控件就被隐藏,不会被显示出来。

orientation
设置线性布局的线性方向

horizontal水平 (默认)
vertical垂直

layout_weight
指定父控件剩余空间分配比例的权重

注:1.水平方向的线性布局中使用weight时需要注意将宽度设置为0dp,垂直方向的线性布局中使用weight时需要将高度设置为0dp。
	2.当只给一个控件配置权重时,可以使控件将剩余空间全部填充,使控件撑开
2.相对布局(RelativeLayout)

相对布局是通过相对定位的方式让控件出现在布局任意位置;在相对布局中如果不指定控件摆放的位置,那么控件都会被默认放在RelativeLayout的左上角。因此要先指定第一个控件的位置,再根据一个控件去给其他控件布局。

** 相对于父元素给控件布局** true 或 false

layout_centerHrizontal水平居中
layout_centerVertical垂直居中
layout_centerInparent相对于父元素完全居中
layout_alignParentBottom位于父元素的下边缘
layout_alignParentLeft位于父元素的左边缘
layout_alignParentRight位于父元素的右边缘
layout_alignParentTop位于父元素的上边缘
layout_alignWithParentIfMissing如果对应的兄弟元素找不到的话就以父元素做参照物

相对于兄弟元素给控件布局 id的引用名“@id/id-name”

layout_toRightof控件的左边缘与给定id控件的右边缘对齐
layout_toLeftof控件的右边缘与给定id控件的左边缘对齐
layout_below控件的上边缘与给定id控件的下边缘对齐
layout_alignRight控件的右边缘与给定id控件的右边缘对齐
layout_alignLeft控件的左边缘与给定id控件的左边缘对齐
layout_alignTop控件的上边缘与给定id控件的上边缘对齐
layout_alignBottom控件的下边缘与给定id控件的下边缘对齐
3.表格布局(TableLayout)

表格布局可以将视图按行、列进行排列,一个表格由一个 TableLayout 标签和若干个 TableRow 标签组成

某列被收缩
xml属性:shrinkColumns
方法:setColumnsShrinkAble(int,boolean)

某列被拉伸
xml属性:stretchColumns
方法:setColumnsStretchAble(int,boolean)

某列被隐藏
xml属性:collapseColumns
方法:setColumnsCollapsed(int,boolean)

合并单元格
xml属性:layout_span=“3”

4.帧布局(FrameLayout)

为每个加入其中的组件创建单独的帧,看上去像是组件叠加在一起

5.绝对布局(absoluteLayout)
6.网格布局(GridLayout)-Android 4.0 新布局

使用的时候需要注意兼容,引入依赖: compile ‘com.android.support:gridlayout-v7:22.+’

GridLayout属性:

columnCount最大列数
rowCount最大行数
orientation子元素中的布局方向
alignmentModealignBounds(值=0):对齐子视图边界。alignMargins(值=1):对齐子视图边距。
columnOrderPreserved使列边界显示的顺序和列索引的顺序相同,默认true
rowOrderPreserved使行边界显示的顺序和行索引的顺序相同,默认是true
useDefaultMargins没有指定视图的布局参数时使用默认的边距,默认值是false

item属性:

layout_column表明控件从第几列开始
layout_row表明控件从第几行开始
layout_columnSpan表明控件跨越多少列
layout_rowSpan表明控件跨越多少行
layout_gravity指定该单元格在容器中的位置
layout_columnWeight列权重
layout_rowWeight行权重
7.约束布局(ConstraintLayout)

Android Studio2.2推出的新布局,并从2.3版本开始成为默认布局。 为了解决复杂的布局,嵌套过多布局问题。
ConstraintLayout使用起来比RelativeLayout更灵活,性能更出色,可以按照比例约束控件位置和尺寸,更好适配屏幕大小的不同机型。

相对定位:

layout_constraintLeft_toLeftOf该控件左侧与另一个控件的左侧对齐
layout_constraintLeft_toRightOf该控件左侧与另一个控件的右侧对齐
layout_constraintRight_toLeftOf该控件右侧与另一个控件的左侧对齐
layout_constraintRight_toRightOf该控件右侧与另一个控件的右侧对齐
layout_constraintTop_toTopOf该控件顶部与另一个控件的顶部对齐
layout_constraintTop_toBottomOf该控件顶部与另一个控件的底部对齐
layout_constraintBottom_toTopOf该控件底部与另一个控件的顶部对齐
layout_constraintBottom_toBottomOf该控件底部与另一个控件的底部对齐
layout_constraintBaseline_toBaselineOf文本基线对齐
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值