本节内容
1.view和ViewGroup的关系
2.FrameLayout 帧布局
3.LinearLayout 线性布局
4.RelativeLayout 相对布局
5.ConstraintLayout 约束布局
一、view和ViewGroup的关系
1.我们布局有两种方式,一种是xml配置,layout下创建.xml文件 ,进行界面布局。还有一种是code创建 ,手动使用代码来创建界面或者是添加控件。
2.一个界面就是一个Activity。 View:单个的,看得到的,可以和用户交互的控件。 ViewGroup :容器,可以存放多个View/ViewGroup 并且管理View的布局。
3.根据每个容器具体功能划分布局:
1.FrameLayout 帧布局 有覆盖关系
2.LinearLayout 线性布局 没有覆盖关系
3.RelativeLayout 相对布局 A和B之间有相对对齐关系(左 右 上 下 中心)
4.ConstraintLayout 约束布局
4.每个容器都有自己的LayoutParams类,管理子控件的布局参数。
.xml引用资源使用@开头
match parent 和父容器宽度或者高度一致
wrap content 自己内容多大控件就多大
二、FrameLayout 帧布局
FrameLayout(很少用 很干净 功能很少)
当添加子控件时,最后添加的控件在最外层,如果控件足够大 会覆盖之前的控件
layoutMargin 设置和父容器左右上下的外间距
padding 视图本身的内容和视图之间的间距
marginStart/Left 和父容器左边的外间距间距
layout_gravity 设置当前控件和父容器的关系
start 、top、 end 、bottom、 center、 center_horizontal、 center_vertical
gravity 设置子控件和自己的关系
px和dp的区别:px = density*dp,density也就是屏幕的密度。因为每个设备的屏幕密度(density)可能不一样,所以我们一般只设置dp值,而不是px。系统会自动帮我们进行转换。
三、LinearLayout 线性布局
oriention是LinearLayout特有的
只有横向或者纵向布局的界面 使用线性布局
1.必须确定摆放的方式 是横向还是纵向
orientation 默认横向摆放 ,在LinearLayout的标签上修改
layout_weight 权重 (每个子控件占的权重,类似比例)
给高度或者宽度设置为0dp 设置对应的比例值
2.注意 容器的嵌套不要太多 ,否则效率低,计算容器的尺寸会花费很多时间。
四、RelativeLayout 相对布局
1.相对布局 ,子控件和子控件之间 ,子控件和父控件之间可以添加的对齐关系。
2. xml中使用id来标识每一个子控件
-
layout_centerHorizontal = "true" 水平居中
-
layout_toStartOf = "id" 在某个控件的左边
-
layout_toEndOf = "id" 在某个控件的右边
-
layout_below = "id" 在某个控件的下边
-
layout_alignStart = "id" 与某个控件的左边对齐
-
layout_marginTop = "id" 与某个控件的距离
-
layout_alignButton = "id" 与某个控件的底部对齐
五、ConstraintLayout 约束布局
1.以上三种布局,都只能通过代码来进行手动布局,不太方便,所以出现了ConstraintLayout来进行拖动布局。
2.拖动布局可以直接在下图所示的位置进行布局。
image.png
3.在布局时还可以添加guideline,可以是水平的,也可以是居中的,来辅助我们进行布局。
4.其他的属性可以在使用过程中自己慢慢体会,慢慢学习。
好的,以上就是今天的全部内容,再见~~
网友评论