天调整界面的时候遇到了一个需求,在一个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