«

Android:Layout_weight的理解

时间:2024-3-2 19:22     作者:韩俊     分类: Android


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

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是怎样很容易就能得到布局情况了。


版权声明:本文为博主原创文章,未经博主允许不得转载。

标签: android

热门推荐