美文网首页
Layout_weight用法

Layout_weight用法

作者: shakesbears | 来源:发表于2016-03-09 15:35 被阅读193次

    例子:如果布局水平方向有三个TextView,代码如下:

    <TextView

    android:text="111111111111"

    android:background="#ff00"

    android:layout_weight="1"

    android:layout_width="0dp"

    android:gravity="center"

    android:layout_height="48dp"/>

    <TextView

    android:text="2"

    android:background="#ffe100"

    android:layout_weight="2"

    android:layout_width="0dp"

    android:gravity="center"

    android:layout_height="48dp"/>

    <TextView

    android:text="3"

    android:background="#0004ff"

    android:layout_weight="3"

    android:layout_width="0dp"

    android:gravity="center"

    android:layout_height="48dp"/>

    效果如下:

    可以看到虽然三个控件不是齐平的,但是三个控件中的文本的第一行是齐平的

    这是因为TextView在LinearLayout中会参考baseLine(基线),要想使控件对齐,只要在LinearLayout中加上

    android:baselineAligned="false"

    即可。注意在TableLayout中不可行

    若控件宽度不是设定为0而是wrap_content,则先按照控件声明的尺寸进行分配,再将剩下的尺寸按weight分配(两个步骤)

    若把三个TextView的宽度都设为match_parent

    设外层LInearLayout的width为10,则剩余的尺寸为:

    10-10*3=-20

    TextView1:10+(-20)/(1+2+3)=20/3

    TextView2:10+(-20)*2/(1+2+3)=10/3

    TextView3:10+(-20)*3/(1+2+3)=0 显示不出来

    结论:尺寸=控件宽度+父控件剩余宽度*比例

    在LInearLayout中设置android:weightSum=""属性可以设置weight的总值,如果布局中只有一个TextView控件的layout_weight=1且weightSum=2,则可占一半,如果还有其他的控件也可以分配,但是weight总值不能超过weightSum的值,否组不会显示出来

    所有layout_开头的属性都是交由父容器去获取设置的,所以layout_gravity是设置控件在父类容器中的位置,而layout_gravity是文本对于控件的位置

    Layout_开头都是交给父容器,没有的都是本身的属性

    相关文章

      网友评论

          本文标题:Layout_weight用法

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