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下权重的方法了。
时间: 2024-10-07 21:14:53