关于android:layout_weight


最近在学习android布局,书上对于android:layout_weight的解释是很奇怪:

android:layout_weight属性,这个指的是这个控件在父控件中所占的比重。比如一个LinerLayout里放了3个TextView。如果分别设置3个TextView的weight为1、1、2,那么这3个TextView的大小就为1:1:2。
于是在模拟器上测试了下,发现书上所说的并非绝对正确。

Test1  layout_height="macth_parent"

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <Button
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="button1"
        android:layout_weight="1" />
    
     <Button
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="button02"
        android:layout_weight="1" />    

</LinearLayout>

显示结果:
关于android:layout_weight


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <Button
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="button1"
        android:layout_weight="1" />
    
     <Button
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="button02"
        android:layout_weight="2" />    

</LinearLayout>
显示结果:
关于android:layout_weight

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <Button
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="button1"
        android:layout_weight="1" />
    
     <Button
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="button02"
        android:layout_weight="5000" />    

</LinearLayout>
显示结果:
关于android:layout_weight


Tips:
从Test1可以发现,当控件设置了android:layout_height="match_parent"时,控件的layout_weight是与实际高度成反比的,此时weight属性值越大,控件所占的高度越小。这一点与书中所说的是相悖的。另外,当控件weight足够大时,如上button2为5000,此时button2将无法正常显示出来。


Test2  layout_height="wrap_content"

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="button1"
        android:layout_weight="1" />
    
     <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="button02"
        android:layout_weight="1" />    

</LinearLayout>
显示结果:
关于android:layout_weight


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="button1"
        android:layout_weight="1" />
    
     <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="button02"
        android:layout_weight="2" />    

</LinearLayout>
显示效果:

关于android:layout_weight


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="button1"
        android:layout_weight="1" />
    
     <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="button02"
        android:layout_weight="5000" />    

</LinearLayout>

显示效果:
关于android:layout_weight

Tips:
从上可以发现,当控件android:layout_height="wrap_content"时,控件的layout_weight是与实际高度成正比的,此时weight属性值越大,控件所占的高度越大。不同的是,当控件weight设置得非常大时,控件此时并不会出现无法显示的情况,因为wrap_content的缘故,使得控件最小也能够保持与内容高度一致。


你可能感兴趣的:(关于android:layout_weight)