配色: 字号:
控件分配权重时的长宽属性
2016-09-18 | 阅:  转:  |  分享 
  
以垂直方向上按权重分配为例,一般我们使用weight这个属性时,但是当控件的高度不同时其呈现的样式也是有所不同的。

这与权重的计算方式决定的,实际上,对于任何不同属性的设置,权重的计算方式是一样的。

那就是,用在分配方向上的屏幕的总长度(宽度)-该方向上空间的原有长度(宽度)=剩余的长度(宽度);

然后在将剩余的长度(宽度)按照权重的比例进行分配;

一、将控件的高度设置为0dp时(android:layout_height="0dp")

在垂直方向上,控件所占的空间则完全按照比例权重的大小来分配;

控件垂直方向上的高度?=(垂直高度-0dp)/权重总数控件权重

如果每一个空间的权重都为1,则能很好的实现空间的平均分配;

二、将控件的高度设置为wep_content时(android:layout_height="wrap_content")

控件垂直方向上的高度?=((垂直高度-各个控件wrap_content的默认高度和)/权重总数控件权重)+该控件wrap_content的默认高度;

三、将控件的高度设置为匹配父容器时(android:layout_height="match_parent")

控件垂直方向上的高度?=((垂直高度-各个控件match_parent的默认高度和)/权重总数控件权重)+该控件wrap_content的默认高度;

假设屏幕高度为100dp,有两个屏幕高度设置为match_parent,其中一个权重为1,一个权重为3:

则权重为1的控件所占的高度为:((100dp-100dp2)/(3+1)1+100dp=75dp;此时其所占的空间比重为3;

则权重为3的控件所占的高度为:((100dp-100dp2)/(3+1)3+100dp=25dp;此时其所占的空间比重为1;

此时在垂直方向上,控件所占的空间就会按照权重的反比进行分配,也就是说,原来分配权重大的占有的比例小,而原来分配权重小的反而占有比例大;

除此之外,权重的分配在在其它控件完成控件分配之后进行的,也就是说,如果没有设置权重的控件和设置权重的控件的同一个父布局中,

要先完成没有设置权重的控件的空间分配,之后剩余的空间作为权重分配的总空间;



献花(0)
+1
(本文系尘缘一梦首藏)