weight和weightSum

Layout Weight

LinearLayout also supports assigning a weight to individual children with the android:layout_weight attribute. This attribute assigns an “importance” value to a view in terms of how much space it should occupy on the screen. A larger weight value allows it to expand to fill any remaining space in the parent view. Child views can specify a weight value, and then any remaining space in the view group is assigned to children in the proportion of their declared weight. Default weight is zero.

大体意思就是,android:layout_weight 这个属性代表了一个“重要性”的值,这个值的大小代表了该控件能在屏幕中占据多大的空间。这个值越大,表明该控件可以在父控件中占据较多的“ 剩余 ”空间。默认的weight是0。

在这里,大家一定要注意“ 剩余 ”两个字!大家往往容易忽略这一点,导致出现了很多问题。举个例子:水平方向布局的父类有三个子类,父类总的宽度是100,子类的宽度分别是10,20,30。 那么 android:layout_weight 这个属性的目的,就是瓜分剩余的 100 - 10 - 20 - 30,也就是剩余的40的使用权。没错! 就是android:layout_weight 这个属性 仅仅决定 哪个子类能瓜分到更多的40的部分!

android:weightSum

Defines the maximum weight sum. If unspecified, the sum is computed by adding the layout_weight of all of the children.

这个就很好理解了,weightSum定义了weight 总和的最大值。如果 android:weightSum 没有定义,那么默认值就是通过各个子类的 layout_weight 累加得到。

例子:

效果:

内部的计算原理是:

Button的宽度 = Button 的 width + Button的weight * 父布局(LinearLayout)的宽度 / weightSum

上面的例子,也就是 Button的宽度 = 0 + 0.5 * LinearLayout的宽度 / 1 = 0.5 * LinearLayout的宽度

也就是Button的宽度将占屏幕的一半。

注意:

在布局文件中的控件,宽高设置成0、固定值、wrap和fill时使用”weight”属性来调整大小的效果是有区别的

当 宽高为固定值时肯定是不行的;

当 android:layout_width(height)=”match_parent”或者“fill_parent”的时候,如果设置了weight属性,那么根据它的weight值(可以理解为优先级)来占据空间,而且这个值是越小,占的空间越大,按且按且相反的大小比例分。

当 android:layout_width(height)=”wrap_parent”的时候,如果设置了weight属性,那么weight值变大占据空间就变大,但是不是按照比例变化,而且weight值达到一定程度控件占据的控件大小就不会在变化。

谷歌工程师推荐大家使用android:layout_width(height)=”0dp”,因为如果你去尝试看就会发现,只有宽或高设置成“0dp”时才是真正的按照“weight”的值按比例设置控件的大小。

关于weight

在相对布局中的控件是不能使用“weight”属性的,但是,在RelativeLayout标签中是可以有“weight”属性的,也就是说你可以用”weight”属性来控制这个相对布局在整个布局中的大小,却不能用”weight”属性来控制这个相对布局中控件的大小。

android 高度上分权重,安卓自适应布局(关于权重weight的使用技巧!)相关推荐

  1. android 高度上分权重,Android LinearLayout weight权重使用

    在日常的开发过程中,我们通常或多或少会使用到LinearLayout的weight属性来进行权重设置,进而达到按比例显示布局的意图 通常我们在使用时,会这样使用 android:layout_widt ...

  2. 淘宝直通车权重上分的影响因素 以及怎样提高权重上分的方案

    今天我们要讲的内容就是关于直通车权重上分的一些操作. 一.影响上权重的因素有 1.商品价格 2.点击率 3.主图卖点及创意 4.关键词出价位置 5.类目竞争程度 二.分析影响因素 1.商品价格 这点需 ...

  3. android+动态设置权重,Android自适应布局(关于权重weight的使用技巧!)

    weight和weightSum Layout Weight LinearLayout also supports assigning a weight to individual children ...

  4. android 手机 跑分榜,安卓手机性能排行榜,华硕以34万跑分排名第一

    手机更新换代太快了,现在大家换手机时越来越看重手机的性能,对于价格要求到是其次,今天我们就来看看最新的鲁大师安卓版的手机跑分情况(样本数据有限,随着跑分设备增加,后期排行会有波动). 安卓手机性能排行 ...

  5. android 正在上传动画,安卓系统上传文件动态显示进度条,进度条经常卡在99%有时也会卡住不显示完整的文字。...

    使用var task = plus.uploader.createUpload上传文件时,添加上传状态监听事件 task.addEventListener("statechanged&quo ...

  6. android平板 跑分软件,安卓平板拿啥比?M1 iPad Pro跑分公布:差距实在太大

    5月12日消息,搭载M1芯片的iPad Pro 2021基于GeekBench 5平台跑分曝光,单核性能1727分,多核性能7270分.作为对比,数码博主@数码闲聊站还放出了一款华为设备和一加9 Pr ...

  7. android第三方上传文件,安卓和苹果终于打通!互传文件无需借助第三方,一碰就能传...

    原标题:安卓和苹果终于打通!互传文件无需借助第三方,一碰就能传 今天在微博上,一位知名数码博主发出了这样一个视频,他先是用自己的坚果R1拍了一张照片,然后进入相册,使用系统内置的文件分享功能,通过 A ...

  8. 上下定高 中间自适应_css经典布局——头尾固定高度中间高度自适应布局

    今天说说一个经典布局:头尾固定高度中间高度自适应布局! 相信做过后台管理界面的同学,都非常清楚这个布局.最直观的方式是框架这个我不想多写费话,因为我们的重心不在这里.如果有不了解的同学可以百度.goo ...

  9. Android 开发 -- 开发第一个安卓程序、Android UI开发(布局的创建:相对布局和线性布局、控件单位:px pt dp sp、常用控件 、常见对话框、ListView)

    文章目录 1. 开发第一个Hello World程序 1.1 开发程序 1.2 认识程序中的文件 1.3 Android程序结构 1.4 安卓程序打包 2. Android UI开发 2.1 布局的创 ...

最新文章

  1. 这道算法题太简单?你忽略了时间复杂度的要求!
  2. springboot-24-restTemplate的使用
  3. percona-toolkit 之 【pt-slave-delay】说明
  4. .Net Core with 微服务 - Polly 服务降级熔断
  5. 用多媒体库 Bass.dll 播放 mp3 [15] - 设置与获取播放速度
  6. 老spring3.2版本 redistemplate 报错_植物大战僵尸加强版本
  7. 基于物理渲染的基础理论
  8. [设计模式-行为型]中介者模式(Mediator)
  9. 思科精睿系列交换机被曝高危漏洞,仅修复部分产品
  10. Python之路(第二十七篇) 面向对象进阶:内置方法、描述符
  11. 编译器错误信息:CS0016:未能写入输出文件 c:\WINDOWS\Microsoft.NET\Framework\...的解决办法...
  12. cobol学习之十数据库的增删改查模板
  13. 在Linux下安全删除eSATA设备
  14. 探究施乐打印机新功能
  15. 解决 ‘@‘ that cannot start any token. (Do not use @ for indentation)
  16. Java反射05 : 修饰符Modifier静态方法学习示例
  17. 网页控制台控制视频倍速
  18. 人脸识别+深度学习,水平远超人类大脑!
  19. 解密mysql导出的ncx文件内的加密密码
  20. SNN ANN 多模态融合 神经网络发展过程的两个分支

热门文章

  1. java遍历目录下的包括子目录下的所有文件
  2. 后台服务系统之dubbo架构
  3. 制作模块-制作模块压缩包
  4. Oracle之用户操作
  5. linux将变量保存生成txt,linux-将输出命令保存在变量中并写入for循环
  6. 解决IntelliJ IDEA报错Error: java: 错误: 不支持发行版本 XX
  7. 200901阶段一C++类和对象
  8. 2017-2018-2 20179302《网络攻防》第十一周作业
  9. Programming with gtkmm 3
  10. PHP实习之路—NO.2(看IPB博文的源码,理清别人开发的思路)