android-基础知识-布局
一.七大布局
七大布局分别为:线性布局(LInearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)、表格布局(TableLayout)、绝对布局(absoluteLayout)、网格布局(GridLayout)、约束布局(ConstraintLayout)
1.相似属性之间的区别:
- gravity的 start 和left的区别:
left是绝对的左边,start会根据不同的国家习惯改变。
比如在从右向左顺序阅读的国家,start代表的就是在右边 - fill_parent 和 match_parent:
Android2.2中match_parent和fill_parent是一个意思两个参数意思一样,match_parent更贴切,于是从2.2开始两个词都可以用。那么如果考虑低版本的使用情况你就需要用fill_parent了
1.LinearLayout:
1.weight 属性分析
- 整体思路:
- 0dp 按整体1 计算比例 如weight分别为1、2、3。那么实际比例为1、2、3
- wrap_content :先wrap_content 分配大小,然后剩余比例分配,注意:wrap_content 最大占1
- march_parent: 按占1分配
- 实例分析:
(1). LinearLayout 三个布局依次为全为 match_parent weight 1、2、3。结果为2:1:0。
原因:
- step 1:个个都是fill_parent,但是屏幕只有一个啦,那么1 - 3 = - 2 fill_parent
- step 2:依次比例是1/6,2/6,3/6
- step 3:先到先得,先分给one,计算: 1 - 2 * (1/6) = 2/3 fill_parent 接着到two,计算: 1 - 2 * (2/6) = 1/3 fill_parent 最后到three,计算 1 - 2 * (3/6) = 0 fill_parent
- step 4:所以最后的结果是:one占了两份,two占了一份,three什么都木有
(2). LinearLayout 两个布局AB依次为match_parent wrap_content,weight 1、1。结果为1:0。
(3). LinearLayout 两个布局AB依次为wrap_content match_parent,weight 1、1。结果为<=1:1。
- 当wrap_content 占1/3时 剩余空间 1-1/3-1=-1/3。分配空间A 1/2-1/3=1/6。B 1-1/6=5/6 结果AB 1:5
- 当wrap_content 占1时 AB 1:1
-
(4). LinearLayout 两个布局AB依次为wrap_content wrap_content,weight 1、1。结果为1:1。
2.ConstraintLayout:
2.1 介绍
约束布局ConstraintLayout是一个ViewGroup,可以在Api9以上的Android系统使用它,它的出现主要是为了解决布局嵌套过多的问题,以灵活的方式定位和调整小部件。从 Android Studio 2.3 起,官方的模板默认使用 ConstraintLayout。
2.2.为什么要用ConstraintLayout
在开发过程中经常能遇到一些复杂的UI,可能会出现布局嵌套过多的问题,嵌套得越多,设备绘制视图所需的时间和计算功耗也就越多。
- 减少嵌套:上下左右位置可以对齐其他控件的上下左右。
- 有些人考虑到了嵌套布局带来的风险,所以用一个RelativeLayout来装下所有的控件。那么问题来了&