您的位置:首页 > 移动开发 > Android开发

Android:Layout_weight的理解

2015-07-02 15:31 489 查看
最近老是纠结布局参数很难记,索性遇到一个就弄懂一个吧

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是怎样很容易就能得到布局情况了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: