1.按比例布局layout_weight和weightSum

来源:互联网 发布:淘宝华佗大药房卖假药 编辑:程序博客网 时间:2024/04/28 07:09

载的地址:http://blog.csdn.net/manoel/article/details/38968577


本文翻译自《50 android hacks》


先看一个效果,一个Button占据整个屏幕的一半宽度。


再看开发文档中对layout_weight属性的描述:

“定义weight总和的最大值。如果未指定该值,以所有子视图的layout_weight属性的累加值作为总和的最大值。一个典型的案例是:通过指定子视图的layout_weight属性为0.5,并设置LinearLayout的weightSum属性为1.0,实现子视图占据可用宽度的50。”

XML文件仅仅包含一个Button,它的宽度占据整个屏幕的一半,代码如下:

[html] view plaincopy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:layout_width="fill_parent"  
  3.     android:layout_height="fill_parent"  
  4.     android:background="#ffffff"  
  5.     android:gravity="center"  
  6.     android:orientation="horizontal"  
  7.     android:weightSum="1" >  
  8.   
  9.     <Button  
  10.         android:layout_width="0dp"  
  11.         android:layout_height="wrap_content"  
  12.         android:layout_weight="0.5"  
  13.         android:text="@string/activity_main_click_me" />  
  14.   
  15. </LinearLayout>  
在上面的xml中,指定Button的android:layout_width属性为0dp,因此需要根据android:weightSum属性决定Button的width。

假设有一个宽度是200dp,android:weightSum属性是1.0的LinearLayout。

在这个LinearLayout中的Button宽度的计算公式如下:

[plain] view plaincopy
  1. Button's width + Button's weight * 200 / sum(weight)  

指定Button的width为0dp,weight为0.5,sum(weight)等于1,那么结果如下。

0 + 0.5 * 200 / 1 = 100

当需要根据比例分配布局可用空间的时候,使用LinearLayout的weight属性是很有必要的,这避免了使用硬编码的方式带来的副作用。

如果目标平台是Honeycomb并且使用Fragment,那么大多数案例中都是使用weight在布局文件中为Fragment分配空间。

深入理解如何使用weight会为开发者增添一项重要技能。


参考资料

http://developer.android.com/reference/android/widget/LinearLayout.html

http://mobile.51cto.com/abased-375428.htm


0 0
原创粉丝点击