ANDROID布局中LAYOUT_WEIGHT的作用

l所有View(视图)元素中都有一个XML属性android:layout_weight,其值为0,1,2,3...等整数值。使用了之后,其对应界面中的元素比例就会发生变化,变大或者变小。layout_weight属性其实就是一个元素重要度的属性,用于在线性布局中为不同的view元素设置不同的重要度。

 

所有的视图都有一个layout_weight值,其默认值为0,表示视图多大就占据多大的屏幕空间。若赋一个>0的数值,则各视图元素将会把父视图中的可用空间进行分割,分割大小具体取决于每一个视图的layout_weight值以及该值在当前屏幕布局的整体layout_weight值和在其它视图屏幕布局的layout_weight值中所占的比率而定。

 

比如:说我们在水平方向两个文本标签(TextView),两个文本标签各自并指定layout_weight值为1,则各占一半,一个是1,一个2,则一个占2/3屏幕,一个占1/3。

 

需要注意的是:layout_weight值越小其重要度越高,占用屏幕越大。

 

 

再举个例子,看下面的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text = "hello" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> 

由于LinearLayout的rientation="horizontal"且TextView的ayout_width="fill_parent",所以该TextView会占据整个行,那么EditText就不会被显示。

 

如果给这两个view加上layout_weight属性,那么这两个view就都可以显示出来了。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text = "hello" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout> 

如上代码所示,两个view都加上了android:layout_weight="1",说明TextView占2/3,而EditText占1/3。而fill_parent则是指占这2/3或者1/3的全部。

 

通过这个例子,可以看出,当使用了layout_weight属性时,该属性优先于width和height属性。

你可能感兴趣的:(ANDROID布局中LAYOUT_WEIGHT的作用)