【Android】UI布局工具及详解

ViewGroup

1.简介

ViewGroup是一种View,他是View容器,也就是里边可以包含其他View.
分类:
(1)layout布局类的ViewGroup
(2)ScrollView带滚动条的ViewGroup
(3)高级View容器(适配器View)
(4)其他ViewGroup

2.布局类的ViewGroup

布局类的容器主要是用来控制子元素的排布方式和排列位置
分类:
(1)线性布局
(2)相对布局
(3)帧布局
(4)网格布局
(5)约束布局
(6)表格布局(旧的布局,已经被网格布局代替)
(7)绝对布局

3.LinearLayout线性布局

线性布局把所有子元素按照先后顺序排列成一条线(水平线或竖直线)
LinearLayout的属性:

(1)orientation
线性布局的方式:
a.vertical 竖直
b.horizontal 水平(默认)

子元素的布局属性(与父元素的容器紧密相关的属性):

(1)layout_gravity
控制子元素在线性布局中的对齐方式:靠上下左右还是居中,默认是靠左(竖直方式)或靠上(水平方式)
a.left 靠左(竖直方式默认)
b.right 靠右
c.top 靠上(水平方式默认)
d.bottom 靠下
e.center_horizontal 水平居中
f.center_vertical 竖直居中
g.center 双向居中

(2)layout_weight
设置容器中多余的空间或者空间不够怎么分配到子元素上,这个属性值是一个整数,代表剩余空间或者不足空间分配在当前子元素上的比例(份数)
如果要实现等分:建议把每个元素的原来的宽度(高度)设为零,weight值均设为1或相同值

4.RelativeLayout相对布局

相对布局中的子元素可以相对于兄弟元素或者父元素进行定位
相对布局中所有子元素默认都处于父元素的左上角

(1)相对于兄弟元素
相对于兄弟元素,可以进行两种方式定位(两种方式配合决定位置):
a.处于兄弟上下左右方
layout_above="兄弟元素的id" 
layout_bellow="兄弟元素的id"
layout_toLeftOf="兄弟元素的id"
layout_toRightOf="兄弟元素的id"

b.跟兄弟上下左右,中间,基线对齐
layout_alignTop
layout_alignBottom
layout_alignLeft
layout_alignRight
layout_alignBaseline

(2)相对于父元素
相对于父元素,也可以进行两种方式的定位
a.处于父元素水平居中,竖直居中,双向居中
layout_centerhorizontal
layout_centerVertical
layout_centerInParent

b.跟父元素上下左右对齐
layout_alignParentTop
layout_alignParentBottom
layout_alignParentLeft
layout_alignParentRight

5.FrameLayout

帧布局:一般子元素不做复杂的定位,帧布局中所有子元素基本就是铺满父元素,并重叠在一起,一般设置为与父元素的宽高一样大
如果要对子元素的位置进行定位:

(1)layout_gravity:控制子元素在帧布局中的对齐方式)
a.left 靠左(竖直方式默认)
b.right 靠右
c.top 靠上(水平方式默认)
d.bottom 靠下
e.center_horizontal 水平居中
f.center_vertical 竖直居中
g.center 双向居中
注意:如果layout_gravity属性需要取多个值,使用二进制位或运算符,比如:right|bottom

(2)visibility属性
这个属性用来设置UI元素是否显示,三个值:
a.visible 显示(默认)
b.invisible 隐藏
c.gone 移除

6.GridLayout

网格布局子元素按照先后顺序,排成多行多列,组织为一个网格效果,可以用来实现常见的九宫格效果。

(1)GridLayout的属性:a.rowCount 行数 | b.columnCount 列数

(2)子元素的布局属性(平分):
a.layout_columnWeight 设置当前格子占据剩余宽度的比例
b.layout_rowWeight 设置当前格子占据剩余高度的比例
c.layout_column 设置当前元素在当前行中处于第几列(列号从0开始)
d.layout_columnSpan 设置当前元素占据网格中几列的宽度
e.layout_row 设置当前元素在当前列种占据第几列(行号从0开始)
f.layout_rowSpan 设置当前元素占据网格中的几行的高度
g.layout_gravity(也有这样的属性,一般不建议用)

7.ConstraintLayout

约束布局:跟相对布局比较相似,主要有利于直接通过设计界面拖拽方式布局界面

(1)这个布局不是sdk包中而是扩展包中的组件,需要添加依赖:
在build.gradle文件的依赖中:
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

(2)其他的布局一般通过编写xml实现比较方便,而一般约束布局都不通过编写xml实现,而是通过拖拽的方式实现布局

8.ScrollView

带滚动条的View,分两种

(1)水平滚动条
HorizontalSrollView

(2)竖直滚动条
ScrollView(默认)

注意:

(1)滚动View中只能放一个子元素,放多个子元素就会报错

(2)只有这个唯一的子元素的宽度或者高度超过ScrollView的宽度和高度才有意义

9.水平线与竖直线

随便的一个控件,如view,一个控件都为一个矩形。

水平线,高度很小,宽度很长的矩形,设置颜色背景

竖直线,高度很长,宽度很窄的矩形,设置颜色背景
 

猜你喜欢

转载自blog.csdn.net/Luoxiaobaia/article/details/124714227