坑爹的android:Layout_weight属性

天调整界面的时候遇到了一个需求,在一个fill_parent的水平的LinearLayout中有两个RelativeLayout,这两个RelativeLayout之间的宽度要求为2:3,我第一时间的反应就是使用android:Layout_weight属性,第一个设置为2,第二个设置为3,结果坑爹的反过来了。于是我不信邪的把android:Layout_weight的值反了一下,结果oK。靠,虽然问题解决但是让我很蛋疼的是这和我的理解相反。本着“科研”的精神,我自己动手做了如下的实验,一个LinearLayout中放了了两个TextView

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal">

android:id="@+id/textView1"

android:layout_width="wrap_content"

android:layout_weight="1"

android:layout_height="50dip"

android:background="#ffff0000"

android:text="TextView1"/>

android:id="@+id/textView2"

android:layout_width="wrap_content"

android:layout_weight="2"

android:layout_height="50dip"

android:background="#ff00ff00"

android:text="TextView2"/>

结果:

然后xml做一点修改:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal">

android:id="@+id/textView1"

android:layout_width="match_parent"

android:layout_weight="1"

android:layout_height="50dip"

android:background="#ffff0000"

android:text="TextView1"/>

android:id="@+id/textView2"

android:layout_width="match_parent"

android:layout_weight="2"

android:layout_height="50dip"

android:background="#ff00ff00"

android:text="TextView2"/>

结果:

从上面两个结果可以看出当LinearLayout的子控件具备android:layout_weight属性时,结果的表现会因为子控件的android:layout_width属性是match_parent或者wrap_content而出现截然不同的结果:

match_parent时,android:layout_weight越小,占的空间越大;fill_parent则相反。

但是这里有一点比较奇怪的是android:layout_width="match_parent"时两个控件的比例和设置的一致,但是android:layout_width="wrap_content"时两个控件的比例就不是设置的比例了,这个有人知道是为什么吗??



http://www.oschina.net/question/272860_81867

你可能感兴趣的:(坑爹的android:Layout_weight属性)