标签:
最近在读《50 Android Hacks》,准备谢谢读书笔记,并不断丰满一下。
听到过这样的问题,“如果我想让一个button占父控件的50%,应该怎么办”。
通常来说,我们可以使用linearlayout其中的属性 android:layout_weight属性
在实现方法上来说,有几种方法来实现.
android的设备有不同的size,对于不同的屏幕尺寸,我们应该有一种普遍
适用的方法。
我们可以使用layout_weight以及weightSum属性来填满layout的剩余空间。
其中android:weightSum定义了一个weight的最大值。如果weightSum属性
为定义的话,它等于其包含的所有子控件的weight之和。对于上面的问题来说,
可以给控件中唯一的字空间设置layout_weight为0.5,而设置weightSum为1.0
设想一下,我们要在一个盒子里面放置物品。盒子的可用空间就是weightSum,
而对应的layout_weight属性则表明了盒子中物品所占的空间。举一个简单的例子,
整个盒子的weightSum为1,其中有两个控件,a和b,其中a的layout_weight为
0.25,b的layout_weight为0.75.所以控件a拥有25%的空间,控件b拥有75%的
空间。
那么我们回到开始的问题,我们给出父控件的weightSum,然后给予子控件的
button其属性android:layout_weight取其一半值。其中xml属性如下
<?xml version="1.0" encoding="utf-8"?>
<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" //获取button的宽度
android:layout_height="wrap_content"
android:layout_weight="0.5" //占据剩余空间的50%
android:text="Click me"/>
</LinearLayout>
LinearLayout获得 android:weightSum属性,并规定所有子控件的weight之和为1.
然后由于 1,button为唯一的子控件。 2.宽度设为0dp, 然后基于weigth属性0.5
所以整个button占据父控件的50%。
所以如果linearlayout的宽度为200dp,其属性android:weightSum=1.然后会有如下计算公式
button width+button weight*200/sum(weight).
对应到具体是实例为 0dp+0.5*200/1=100
读书笔记_《50 Android Hacks》之一 linearlayout的weightsum及weights
标签:
原文地址:http://www.cnblogs.com/pangziwang/p/5001862.html