首页 > 代码库 > Anroid下的权重

Anroid下的权重

Android下的权重问题困扰了我很久,最近一直在寻找答案,终于找到了解决的方法了,下面 通过两个小例子就可以理解了。


案例一:

技术分享

<span style="color:#333333;"><LinearLayout 
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:orientation="horizontal"
    xmlns:android="http://schemas.android.com/apk/res/android">
    
    <EditText 
        android:layout_height="wrap_content"
        android:layout_width="0dip"
      </span><strong><span style="color:#009900;">  android:layout_weight="5"</span></strong><span style="color:#333333;">
        android:hint="Type something"
        />
    <Button 
        android:layout_height="wrap_content"
        android:layout_width="0dip"
      </span><span style="color:#009900;"><strong>  android:layout_weight="2"</strong></span><span style="color:#333333;">
        android:text="Send"
        />

</LinearLayout></span>

分析代码:

原理很简单,系统会把LinearLayout下所有的控件指定的layout_weight 值相加,得到一个总值,然后每个控件所占大小的比例就是用该控件的layout_weight 值来除以刚才算出来的总值。像上面所示,文本框所占的比例为 5/7,按钮所占比例为 1/7。


有了这个思想就可以联想到嵌套的LinearLayout了,此处就不再详解,下面看看案例二。


案例二:

技术分享

<LinearLayout 
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:orientation="horizontal"
    xmlns:android="http://schemas.android.com/apk/res/android">
    
    <EditText 
        android:layout_height="wrap_content"
    <span style="color:#009900;"><strong>    android:layout_width="0dip"
       android:layout_weight="1"</strong></span>
        android:hint="Type something"
        />
    <Button 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="Send"
        />

</LinearLayout>

认真看一下,发现好像和上面案例一是一样的,其实看代码会发现是不一样的,这里仅指定EditText的layout_weight属性,并将Button的宽度改回wrap_content.这表示Button的宽度仍然按照wrap_content 来计算,而EditText则会占满屏幕所剩余的空间,墙裂推荐大家使用这个方式。


相信聪明的亲现在明白Android下权重的方法了。





Anroid下的权重