android:layout_weight属性分析
来源:互联网 发布:而知也无涯成语 编辑:程序博客网 时间:2024/04/28 05:47
LinearLayout支持对其子View设置layout_weight属性,用来给子View分配自身剩余布局空间。此属性的类型为浮点型,默认值为0。
对于布局剩余空间,结合下面一个简单的例子来进行说明。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" tools:context=".MainActivity"> <View android:id="@+id/view_red" android:layout_width="100dp" android:layout_height="50dp" android:background="#FF0000"/> <View android:id="@+id/view_green" android:layout_width="100dp" android:layout_height="50dp" android:background="#00FF00"/> <View android:id="@+id/view_blue" android:layout_width="100dp" android:layout_height="50dp" android:background="#0000FF"/> </LinearLayout>
以nexus5为例,屏幕横向显示宽度为360dp,三个view宽度均为100dp,因此剩余宽度为60dp。考虑如下四种情况:
- 三个view均为默认值0。剩余空间不进行分配
- 红色view设置为1。此时红色view会占据所有的剩余空间,即最终红色view的宽度为160dp
- 红色view设置为1,绿色view设置为2。红色和绿色view会按照1:2占据剩余空间,因此红色view宽度为120dp,绿色view宽度为140dp
- 三个view均设置为1。三个view按照1:1:1占据剩余空间,因此宽度均为100dp + 20dp = 120dp。
这四种情况的显示效果如下图:
从上面的分析可以看出,layout_weight属性是指子view占据剩余布局空间的“权重”。其本质是LinearLayout将其指定方向上的剩余布局空间,按照子view所设置的权重值进行再分配。对此有了充分的理解之后,分析一个比较极端的情况,将上面例子中所有view的layout_width更改为160dp,剩余空间为360dp - 160dp*3 = -120dp,依然考虑与上例一样的四种情况:
- 三个view均为默认值0。剩余空间不进行分配,蓝色view由于宽度限制只显示了40dp
- 红色view设置为1。此时红色view会占据所有的剩余空间,即最终红色view的宽度为160dp + (-120dp) = 40dp,绿色和蓝色view均为160dp
- 红色view设置为1,绿色view设置为2。红色和绿色view会按照1:2占据剩余空间,因此红色view宽度为120dp,绿色view宽度为80dp,蓝色view正好显示完全160dp
- 三个view均设置为1。三个view按照1:1:1占据剩余空间,因此宽度均为160dp - 40dp = 120dp。
这四种情况的显示效果如下图:
注意,当layout_width或layout_height设置为"wrap_content"时,会先计算出对应的宽度或高度值,然后再进行layout_weight的计算过程。因此,当需要按比例占据LinearLayout全部布局空间时,将相应的高度或宽度值设置为"0dp"可以减少view测量过程,从而提高布局性能。
0 0
- android:layout_weight属性分析
- android中layout_weight属性分析
- android---android:layout_weight属性
- android layout_weight 属性
- android:layout_weight属性详解
- Android layout_weight属性
- android:layout_weight属性详解
- android:layout_weight属性探讨
- android:layout_weight属性详解
- Android layout_weight属性备忘
- android:layout_weight属性详解
- android:layout_weight属性讲解
- Android layout_weight属性
- android:layout_weight属性详解
- android:layout_weight 属性
- android:layout_weight属性详解
- android:layout_weight属性详解
- android:layout_weight属性详解
- 5. 程序员生存定律--定律的概要
- 待销帐
- 面试题[hash_map、字典树与倒排索引]: 全文检索
- 网页信息抓取进阶 Jsoup的不足之处
- 【USACO3.3.3】亚瑟王的宫殿
- android:layout_weight属性分析
- Jsoup网页内容抓取分析
- C语言简单实现接口
- HDU 1840--Equations【数学】【水题】
- 怎样尊重一个程序员
- 求将来个字符数组连接起来的代码 c语言编写的
- linux下tar.gz、tar、zip等解压缩、压缩命令
- 6. 程序员生存定律--细论影响人生成绩的四个要素(1)
- 关于vhdl语言中模块连接的方法和注意点