Android:Layout_weight的理解

最近老是纠结布局参数很难记,索性遇到一个就弄懂一个吧

Layout_weight这个参数似乎不太好理解,尤其当layout_width="wrap_content"和layout_width=“fill_parent"时的区别,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_gravity="center"
    android:background="#aabbcc"
    android:gravity="top"
    android:orientation="horizontal" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="1dp"
        android:background="#aa0000"
        android:text="ONE" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="1dp"
        android:background="#aa0000"
        android:text="THREE" />

</LinearLayout>
未加Layout_weight时,仅仅包住其内容即可:


添加权重,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_gravity="center"
    android:background="#aabbcc"
    android:gravity="top"
    android:orientation="horizontal" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="1dp"
        android:layout_weight="1"
        android:background="#aa0000"
        android:text="ONE" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="1dp"
        android:layout_weight="2"
        android:background="#aa0000"
        android:text="THREE" />

</LinearLayout>

两个文本框的都是 layout_width=wrap_content时,并添加权重,会得到以下效果


统先给2个TextView分配他们的宽度值wrap_content(宽度足以包含他们的内容ONE,THREE即可),然后会把剩下来的屏幕空间按照1:2的比列分配给2个textview,所以就出现了上面的图像。


两个文本框的都是 layout_width=fill_parent时,并添加相同的权重,会得到以下效果


你会发现1的权重小,反而分的多了,这是为什么呢???

系统先给2个textview分配他们所要的宽度fill_parent,也就是说每一个TextView都是填满他的父控件,这里就是屏幕的宽度。

那么这时候的剩余空间=1个parent_width-2个parent_width=-1个parent_width (parent_width指的是屏幕宽度 )

那么第一个TextView的实际所占宽度应该=fill_parent的宽度,即parent_width + 他所占剩余空间的权重比列1/3* 剩余空间大小(-1parent_width)=2/3parent_width

同理第二个TextView的实际所占宽度=parent_width + 2/3*(-2parent_width)=1/3parent_width;

所以就是2:1显示了


总结:这里的Layout_weight占用剩余空间的比重的概念很重要,这样无论layout_weight是怎样很容易就能得到布局情况了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值