码迷,mamicode.com
首页 > 移动开发 > 详细

读书笔记_《50 Android Hacks》之一 linearlayout的weightsum及weights

时间:2015-11-27 23:28:27      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

    最近在读《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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!