Android按比例布局之layout_weight和weightSum的使用
2015-10-29 14:18
543 查看
一个Button占据整个屏幕的一半宽度,开发文档中对layout_weight属性的描述:
“定义weight总和的最大值。如果未指定该值,以所有子视图的layout_weight属性的累加值作为总和的最大值。一个典型的案例是:通过指定子视图的layout_weight属性为0.5,并设置LinearLayout的weightSum属性为1.0,实现子视图占据可用宽度的50。”
XML文件仅仅包含一个Button,它的宽度占据整个屏幕的一半,代码如下:
[html] view
plaincopy
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="1" >
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="@string/activity_main_click_me" />
</LinearLayout>
在上面的xml中,指定Button的android:layout_width属性为0dp,因此需要根据android:weightSum属性决定Button的width。
假设有一个宽度是200dp,android:weightSum属性是1.0的LinearLayout。
在这个LinearLayout中的Button宽度的计算公式如下:
[plain] view
plaincopy
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会为开发者增添一项重要技能。
“定义weight总和的最大值。如果未指定该值,以所有子视图的layout_weight属性的累加值作为总和的最大值。一个典型的案例是:通过指定子视图的layout_weight属性为0.5,并设置LinearLayout的weightSum属性为1.0,实现子视图占据可用宽度的50。”
XML文件仅仅包含一个Button,它的宽度占据整个屏幕的一半,代码如下:
[html] view
plaincopy
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="1" >
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="@string/activity_main_click_me" />
</LinearLayout>
在上面的xml中,指定Button的android:layout_width属性为0dp,因此需要根据android:weightSum属性决定Button的width。
假设有一个宽度是200dp,android:weightSum属性是1.0的LinearLayout。
在这个LinearLayout中的Button宽度的计算公式如下:
[plain] view
plaincopy
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会为开发者增添一项重要技能。
相关文章推荐
- 【Android Studio学习】
- Android Studio 简介及导入 jar 包和第三方开源库方法
- android中像素单位dp、px、pt、sp的比较
- android中像素单位dp、px、pt、sp的比较
- android五种布局模式
- android五种布局模式
- Android SDK Timer的schedule()方法的正确使用
- Android服务开发经验——优雅地活着(唤醒)
- Android视频开发国人开发的Vitamio开源项目
- Android 5.0源码分析---startService与bindService的区别
- android悬浮窗口的实现
- Android4.0以上版本比较靠谱的获取手机屏幕分辨率的方法
- android 悬浮窗使用surfaceview的问题
- 在Android Studio添加SO library
- Android保存图片(可能屏幕截图的)到系统图库
- android 瀑布流照片墙
- android中的文件操作详解以及内部存储和外部存储
- Android开发抢手,如何培养成移动开发高手?
- Android还在用Toast?你Out啦,该试试Snackbar了
- ListView random IndexOutOfBoundsException on Froyo