Android中关于android:layout_weight的分析与巧妙应用一

http://blog.csdn.net/jincf2011/article/details/6598256 这里有相关的理论知识,感兴趣的可以查看下

 

 

android:layout_weight是定义一个控件的权重,也就是它的重要性的一个参数。网上关于其用法有两种说法:

一是值越大,重要性越低,所占用的空间越小;

二是值越大,重要性越高,所占用的空间越大

其实这两种情况都不太准确,第一种情况与android:layout_height(注:这里方向是竖直,如果方向设为水平,刚取决与android:layout_weight)的取值有关,如果设为fill_parent,刚第一种情况成立(注:只有此种情况下成立)

如果设为0dp(包括0px等等),刚第二种情况成立。(这里补充一点特殊的:如果我不设置为0dip,我设置成两个固定的值,比如下图上下两个LinearLayout的height分别设置成160dip,160dip,但是加起来不超过整个屏幕,或者故意超过整个屏幕,结果会怎么样?在这种情况下,首先会保证两个LinearLayout的固定高度,然后如果没有占满整个屏幕,则剩下的空间按照两个的权重(正比)来分配,如果超过呢,也会将超出的高度按照权重均分到两个LinearLayout,即减相对应的值,)

  举两个例子,(1)假设屏幕为480x320,且让应用程序去掉标题栏并全屏,上下两个LinearLayout权重分别为2和3,高度都设为140dip,刚还剩下480-140-140=200(dip)的高度未使用,则实例LinearLayout的高度为140+200*2/(2+3)=220,140+200*3/(2+3)=260

  (2)超过屏幕,高度都设为290dip,刚会多出480-290*2=100,实例高度为290-(100*2/(2+3))=250,290-(100*3/(2+3))=230

如果不设,刚默认为0

以下为自己的截图和测试代码

 

 

源码下载:https://files.cnblogs.com/xiaoQLu/LinearLayoutTest.rar

posted @ 2011-08-08 17:22  muzhi121  阅读(7058)  评论(0编辑  收藏  举报