android-基础知识-布局

android-基础知识-布局一.七大布局七大布局分别为:线性布局(LInearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)、表格布局(TableLayout)、绝对布局(absoluteLayout)、网格布局(GridLayout)、约束布局(ConstraintLayout)1.相似属性之间的区别:gravity的 start 和lef...
摘要由CSDN通过智能技术生成

android-基础知识-布局

一.七大布局

七大布局分别为:线性布局(LInearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)、表格布局(TableLayout)、绝对布局(absoluteLayout)、网格布局(GridLayout)、约束布局(ConstraintLayout)

1.相似属性之间的区别:
  1. gravity的 start 和left的区别:

        left是绝对的左边,start会根据不同的国家习惯改变。

        比如在从右向左顺序阅读的国家,start代表的就是在右边
  2. fill_parent 和 match_parent:

        Android2.2中match_parent和fill_parent是一个意思两个参数意思一样,match_parent更贴切,于是从2.2开始两个词都可以用。那么如果考虑低版本的使用情况你就需要用fill_parent了

1.LinearLayout:

1.weight 属性分析
  1. 整体思路:
  • 0dp 按整体1 计算比例 如weight分别为1、2、3。那么实际比例为1、2、3
  • wrap_content :先wrap_content 分配大小,然后剩余比例分配,注意:wrap_content 最大占1
  • march_parent: 按占1分配
  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:

简书地址引用:

ConstraintLayout 官方文档:

2.1 介绍

约束布局ConstraintLayout是一个ViewGroup,可以在Api9以上的Android系统使用它,它的出现主要是为了解决布局嵌套过多的问题,以灵活的方式定位和调整小部件。从 Android Studio 2.3 起,官方的模板默认使用 ConstraintLayout。

2.2.为什么要用ConstraintLayout

在开发过程中经常能遇到一些复杂的UI,可能会出现布局嵌套过多的问题,嵌套得越多,设备绘制视图所需的时间和计算功耗也就越多。

  • 减少嵌套:上下左右位置可以对齐其他控件的上下左右。
  • 有些人考虑到了嵌套布局带来的风险,所以用一个RelativeLayout来装下所有的控件。那么问题来了&
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值