Android线性布局LinearLayout 内 weight

作者: 滴滴滴9527 | 来源:发表于2017-04-14 23:27 被阅读192次

    1、weight 属性是LinearLayout独有的属性

    2、weight值是一个数字,用于指定每个控件与其他同级控件剩余空间中的占比,

    其实就是按比例分配屏幕的**剩余**宽度或者高度

    这有点像饮料配方中各种成分的比例: “2 份苏打、1 份糖浆”是指饮料中三分之二是苏打。例如,如果你将一个控件的 weight 值指定为 2,将另一个控件的 weight 值指定为 1,总和是 3,那么第一个控件将填满剩余空间的 2/3,而第二个控件则填满其余部分。 如果你添加了第三个控件,将其 weight 值指定为 1,那么现在第一个控件(weight 值为 2)将获得 1/2 的剩余空间,其余两个视图则各占 1/4。

    注意:这里是分配剩余宽度或高度

    例如:你在水平方向上有5个控件,其中4个控件都指定了weight 属性为1,那么设置这4个组件的宽度android:layout_width=" "是不起作用的,系统会在扣除那个没有指定weight属性组件的所需宽度后为这4个控件平方剩余宽度

    3、LinearLayout所有控件的默认 weight 值都为 0,所以如果你仅将一个控件的 weight 值指定为大于 0,那么等到其他所有控件都获得所需空间后,该视图便会填满所有剩余空间

    PS:这一点很实用,例如,有2个控件在android:orientation="horizontal"中,你想要把一个控件放在右边,但是android:layout_gravity="right"不生效,这是因为LinearLayout在竖直布局下,左对齐、右对齐,水平居中生效,在水平布局下,顶部对齐、底部对齐、竖直居中生效。

    有了weight属性后我们就很好解决了,我们可以把左边的控件weight值设为1,那么另外一个控件就自动局右了

    4、在android:orientation="horizontal"时使用weight属性的控件宽度设置为零 (0dp) 可提高布局性能,这是因为如果将宽度设置为 "wrap_content",则会要求系统计算宽度,而该计算最终毫无意义,因为 weight 值还需要计算另一个宽度,才能填满剩余空间;同理在方向为vertical时,使用weight属性的控件高度设置为零 (0dp) 可提高布局性能


    相关文章

      网友评论

        本文标题:Android线性布局LinearLayout 内 weight

        本文链接:https://www.haomeiwen.com/subject/yvmgattx.html