Android 为我们提供了五种布局方式

  1. 线性布局:LinerLayout
  2. 表格布局:TableLayout
  3. 相对布局:RelativeLayout
  4. 绝对布局:AbsoluteLayout
  5. 帧布局:FrameLayout

其中最常用的应该就是线性布局了。而在线性布局中有一个属性layout_weight。这个属性的字面意思是权重,就是说可以通过这个属性来设置控件在线性布局中的大小比例。
但是在使用中我们发现,当线性布局中的控件使用match_parent时控件大小与权重比例居然相反,而使用wrap_content时甚至weight甚至毫无作用。这是为什么呢?
按照Google官方的说法,layout_weight属性是用来分配Linerlayout中剩余的屏幕空间的。
现在我们来做一下算术题:

假设屏幕宽度是W,LinerLayout的布局方式是横向,宽度是屏幕宽度即W。Linerlayout中有两个控件,宽度都是match_parent即W.现在定义两个控件左边的为2,右边的为1.
现在我们来算一下,两个控件的宽度:
剩余宽度 S = W - 2*W = -W.
左边控件分配到的剩余宽度 SL = (2/3)*S =-(2/3)W
右边控件分配到的剩余宽度 SL = (1/3)S = -(1/3)W
那么左边控件的实际宽度就是 -(2/3)W+W = (1/3)W
那么右边控件的实际宽度就是 -(1/3)W+W = (2/3)W
于是权重设置为2:1 但实际显示效果却是1:2就是这样来的。有兴趣的同学可以算一下使用wrap_content时显示的比例。可以发现根本毫无规律。
那么我们就不用layout_weight这一属性了吗?
当然不是
按照Google官方推荐的方法,在使用layout_weight时。可以将width设置为0dp(当然布局方式是竖向的时候是height)。
希望对看到这篇文章的人有帮助:D

Android 布局属性 Android:layout_weight 总结相关推荐

  1. android布局属性,Android 布局学习之——LinearLayout属性baselineAligned的作用及baseline...

    相信大家对LinearLayout已经相当熟悉,但你们是否了解它的属性baselineAligned呢? Android官方文档是这么描述的: 那到底这个属性是做什么用的呢? baselineAlig ...

  2. android 布局属性

    android 布局属性 第一类:属性值为true或false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直 ...

  3. xamarin android 布局,Xamarin.Android 上中下布局

    xml代码: xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_par ...

  4. Android布局属性详解之RelativeLayout

    RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false android:layout_centerHrizontal 水平居中 android:layout_cent ...

  5. Android布局属性大全

    第一类:属性值为true或false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:la ...

  6. android布局属性

    android:layout_alignParentRight="true" 使当前控件的右端和父控件的右端对齐.这里属性值只能为true或false,默认false. andro ...

  7. android layout_width 属性,android:layout_weight属性详解

    在android开发中LinearLayout很常用,LinearLayout的内控件的android:layout_weight在某些场景显得非常重要,比如我们需要按比例显示.android并没用提 ...

  8. android布局边缘加深,Android布局属性详解

    View的布局显示方式有下面几种:线性布局(Linear Layout).相对布局(Relative Layout).表格布局(Table Layout).网格视图(Grid View).标签布局(T ...

  9. android布局的属性大全,Android布局属性大全

    第一类:属性值为true或false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:la ...

最新文章

  1. 网速测量、流量监控软件 Bandwidth Meter Pro
  2. Sentinel+Nacos实现Sentinel的持久化规则,就很nice!
  3. 通过netstat+rmsock查找AIX端口对应进程
  4. jquery插件 --- 图表 表格
  5. Delphi中String与PAnsiChar转换
  6. 华为大数求和 java_大数乘积java
  7. MRP的数据处理-华北水利水电大学(作业)
  8. css的3d注意事项
  9. 老年代的更新机制_如何理解Java GC机制
  10. Confluence 6 导入 Active Directory 服务器证书 - UNIX
  11. R导出可编辑图到ppt:结合使用ggplot2以及officer
  12. sql交叉表查询_初学前端需要注意什么 SQL连接相关内容有哪些
  13. python判断GET和POST有没有某个参数
  14. Packet Tracer 5.0建构CCNA实验攻略2配置vlan
  15. 华为Mate30安装google play服务最全方法
  16. C语言中do while用法
  17. nginx负载均衡的5种策略及原理
  18. 洛谷 P1562 智破连环阵 题解(搜索)
  19. Steam帝国时代3完全版,每次启动UAC
  20. QT 5.12 安装MinGW 7.3.0 32bit

热门文章

  1. 数据分析(排序,数据特征、平均数、方差等,累计统计,相关分析)
  2. Window上,启动Tomcat服务之后,关闭启动窗口,服务器也随之关闭
  3. 可变数组集合ArrayList
  4. 洛谷U4807抽水机[最小生成树]
  5. jQuery避免$符和其他JS库冲突的方法对比
  6. 历届试题 密码发生器
  7. JavaScript的作用域与闭包
  8. 配置ODBC数据源——找不到SA账户的解决
  9. Windows Phone开发(35):使用Express Blend绘图 转:http://blog.csdn.net/tcjiaan/article/details/7493010...
  10. 数据结构之表(5)栈的顺序实现