关于Android开发中布局属性weight的解释

如题,很多Android开发者,特别是新手,对页面布局进行划分时,用到一个布局属性,这个属性就是layout_weight(布局权重),在使用过程中,因为对这个属性了解不深入,常常陷入误区,例如:


<!--想法:布局比例设置成为1:2>

<LinearLayout                                          //布局参数1
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"                         //将此weight值设置成为1.  
    android:background="#FFFF0000"></LinearLayout>    //为对比明显起见,将背景刷成红色

<LinearLayout                                        //布局参数2

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="2"                       //将此weight值设置成为2.  
    android:background="#FF00FF00"></LinearLayout>  //为对比明显起见,将背景刷成绿色
预览效果如下图:


                  (附图1)

“诶,不是1:2,怎么成了2:1了!郁闷!”

       要想知道原因,我们首先学会找“”官方解释“”,打开Android开发API_6.0:

    

     翻译过来就是:weight 是表示将布局相关的布局参数(就是上面例子所解释的布局参数1,布局参数2,说白了就是两块布局区域)的剩余空间进行摊分,注意是剩余空间!!那么摊分的权重就是设定的weight值(上例为1:2)。

我们回过头来分析一下上述例子到底问题出现在哪里?

比较发现,两个布局参数均在layout_height中设置“match_parent”属性,即高度铺满整个屏幕,那么整个屏幕剩余的空间为几呢,我们将一个完整的屏幕大小设置成为3个单元(为便于后面计算,这个值可以自己设定),那么剩余空间为:3单元-3单元(布局参数1所占的空间)+3单元(布局参数2所占的空间)=-3单元,可以算出布局参数1最后所占的空间为1单元+(-3单元)=-2单元;同理可知布局参数2最后所占的空间为2单元+(-3单元)=-1单元,最后所占空间比例为(-2):(-1)=2:1,所以出现附图1所出现的结果。

      因此,为了方便起见,在开发过程中,我们习惯将layout_height设置成为0dp,也就是剩余空间为整个屏幕,然后再根据weight来进行划分。

    ···

    android:layout_height="0dp"
    android:layout_weight="1"    
    ···

  ···

    android:layout_height="0dp"
    android:layout_weight="2"    
    ···


  结果如附图2所示:

      (附图2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值