最近老是纠结布局参数很难记,索性遇到一个就弄懂一个吧
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”时,并添加相同的权重,会得到以下效果
系统先给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是怎样很容易就能得到布局情况了。