android 高度上分权重,Android LinearLayout weight权重使用
在日常的开发过程中,我们通常或多或少会使用到LinearLayout的weight属性来进行权重设置,进而达到按比例显示布局的意图
通常我们在使用时,会这样使用
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="@android:color/holo_blue_light" />
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/holo_red_light" />
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/holo_green_light" />
权重示例.png
我们一般使用weight属性时,会将width或者height设置为0dp,这时控件的宽或者高就会按照我们设置的权重,如上面的2:1:1来填充父控件
但是,如果子控件的宽度或高度不设置成0dp,那么他们的宽高是怎么分配的呢?
我们首先明确一点:weight权重是针对于LinearLayout的剩余空间,所以我们在设置该属性之后,LinearLayout会计算自己的剩余空间,然后将剩余空间按权重分配到子控件上。
以横向布局为例:
LinearLayout的剩余空间 = LinearLayout的宽度 - 各个子控件的宽度,可以有负值
以2个子控件为例,权重分别为2和1
那么
子控件1的宽度 = 子控件1的初始宽度 +(2/3)* LinearLayout的剩余空间
子控件2的宽度 = 子控件2的初始宽度 +(1/3)* LinearLayout的剩余空间
我们来验证一下:
为方便测量,使用px单位, 我们先设定父控件宽 = 800px, 子控件1 = 200px 子控件2 = 100px,weight都为1,我们自己先算一下,可以得出:
LinearLayout的剩余空间 = 800 - 200 - 100 = 500
子控件1宽度 = 200 + (1/2) * 500 = 450
子控件2宽度 = 100 + (1/2) * 500 = 350
看下效果是否和我们计算的一致:
android:layout_width="800px"
android:layout_height="match_parent"
android:orientation="horizontal">
android:layout_width="300px"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/holo_blue_light" />
android:layout_width="100px"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/holo_red_light"
android:singleLine="true" />
权重示例1.png
和我们预期的一致
我们再检测下"match_parent"的情况:
设定父控件宽 = 600px, 子控件1 ="match_parent" weight = "1" 子控件2 = "match_parent" weight = "2",我们自己先算一下,可以得出:
LinearLayout的剩余空间 = 600- 600- 600= -600
子控件1宽度 = 600+ (1 / 3) * (-600)= 400
子控件2宽度 = 600+ (2 / 3) * (-600)= 200
看下效果是否和我们计算的一致:
android:layout_width="600px"
android:layout_height="match_parent"
android:orientation="horizontal">
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/holo_blue_light" />
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="@android:color/holo_red_light"
android:singleLine="true" />
权重示例2.png
和我们计算的完全一致
子控件"wrap_content"与确定值计算方式同上,有空的可以验证下
另外需要注意一点:weight是float类型
android 高度上分权重,Android LinearLayout weight权重使用相关推荐
- android 高度上分权重,安卓自适应布局(关于权重weight的使用技巧!)
weight和weightSum Layout Weight LinearLayout also supports assigning a weight to individual children ...
- android 手机 跑分榜,Android手机哪家强?安兔兔鲁大师榜单见分晓!
影响智能手机性能强弱的最关键部件就是SoC(处理器),这颗芯片采用的制程工艺.CPU架构和频率.GPU架构和频率都是至关重要的参数. 问题来了,想让普通消费者搞明白7nm和7nm EUV工艺的差异:C ...
- android通讯录上传服务器,Android 实现读取通讯录并上传服务器
关键技术 - 内容解析者Resolver - ListView - Socket网络编程 权限申请 //需要在Manifest.xml文件中申请权限 布局: xmlns:app="http: ...
- 笔记本怎么用android,电脑上如何使用Android系统
安卓系统能在安卓上运行?这将如何操作. 由于很多原因,搭载Windows及Android双系统的产品一直没有大规模上市,而类似华硕Transformer Book Trio这样的双系统产品价格则高达万 ...
- android mysql上传头像,Android自定义控件仿QQ编辑和选取圆形头像
android大家都有很多需要用户上传头像的需求,有的是选方形,有的是圆角矩形,有的是圆形. 首先我们要做一个处理图片的自定义控件,把传入的图片,经过用户选择区域,处理成一定的形状. 有的app是通过 ...
- android 卡片上滑放大,android仿摩拜单车APP、炫酷RecyclerView、卡片滑动、仿饿了么点餐、自定义索引等源码...
Android精选源码 Android优质博客 前言permissions4m 最初的设计是仅仅做成一个编译器注解框架,在1.0.0版本时,它纯粹地实现了原生 Android 请求流程,关于它的设计思 ...
- android 高度百分比,如何在Android中进行百分比高度和宽度?
现在,可以用Guidelines定位百分比值 xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ap ...
- android标题栏上增加按钮,Android:向自定义标题栏添加按钮
我创建了一个自定义标题栏,如本例所示 "一个自定义标题栏" – 一半下来. 在某些活动中,我想在标题栏的右侧放置一个按钮(与facebook app相同).我试图按如下方式向视图添 ...
- Android 实现上拉背景模糊,Android开发者珍藏必备【开源项目篇】
日历 星期视图日历 日历列表视图 material风格的日历 提交日历日期 适配MD风格日历 toolbar相结合的弹出日历 横向日历 Tab Material风格的Tab Material风格的Ta ...
最新文章
- 计算机应用基础网络统考操作,全国网络统考《计算机应用基础》完整最新题库及答案[整理].pdf...
- (转自ITAA)个人问题汇总(workatlab)
- Algs4-1.4.7统计算术运算与比较次数
- mvc:default-servlet-handler/作用
- 1.5编程基础之循环控制 34 求阶乘的和
- java中如何播放wav_如何播放.wav文件与java
- 100道MySQL数据库面试题解析
- loss曲线 pytorch_PyTorch应用:用ResNet进行交通标志分类
- 《通信原理》复习笔记6----第六章数字基带传输系统(重中之重点+难上加难点)
- ASM Is Unable To Detect SCSI Disks On Windows. [ID 880061.1]
- Windows XP 64位注册表删除问题
- 人脸识别权威评测和人脸识别技术现状
- 计算机基础:13、计算机CPU--运算器
- CentOS7安装RabbitMQ(解决guest用户无法登录问题)
- Java实现 LeetCode 623 在二叉树中增加一行(遍历树)
- Java设计模式(疯狂Java联盟版)
- linux平台下苹果打包研究
- 在以太坊开发自己的ERC-20代币及如何ICO
- hbuilderx 使用总结
- C++-图像目标区裁剪ImageCropping