zoukankan      html  css  js  c++  java
  • Android布局中的layout_weight和weightSum属性的详解及使用

    由于Android设备的尺寸大小不一,种类繁多,当我们在开发应用的时候就要考虑屏幕的适配型了,尽可能让我们的应用适用于主流机型的尺寸,这样我们的应用不会因为尺寸不同而不美观,解决屏幕适配问题的方法有很多,在这里我所讲的是其中的一种解决方案---巧妙的使用layout_weight属性。

         在布局中Layout_weight属性的作用:它是用来分配属于空间的一个属性,你可以设置它所占据屏幕的权重。

    1.layout_weight属性  

       首先我们先看下效果,然后再给出计算公式。

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
     2     xmlns:tools="http://schemas.android.com/tools"  
     3     android:layout_width="match_parent"  
     4     android:layout_height="match_parent"  
     5     android:orientation="horizontal" >  
     6   
     7     <Button  
     8         android:layout_width="0dp"  
     9         android:layout_height="wrap_content"  
    10         android:layout_weight="1"  
    11         android:text="buttton1" />  
    12   
    13     <Button  
    14         android:layout_width="0dp"  
    15         android:layout_height="wrap_content"  
    16         android:layout_weight="2"  
    17         android:text="button2" />  
    18   
    19 </LinearLayout>

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
     2     xmlns:tools="http://schemas.android.com/tools"  
     3     android:layout_width="match_parent"  
     4     android:layout_height="match_parent"  
     5     android:orientation="horizontal" >  
     6   
     7     <Button  
     8         android:layout_width="match_parent"  
     9         android:layout_height="wrap_content"  
    10         android:layout_weight="1"  
    11         android:text="buttton1" />  
    12   
    13     <Button  
    14         android:layout_width="match_parent"  
    15         android:layout_height="wrap_content"  
    16         android:layout_weight="2"  
    17         android:text="button2" />  
    18   
    19 </LinearLayout> 

    效果如下:

        计算公式如下:

         首先我们假设屏幕的宽度为L

         实际宽度 = 控件原来的长度 + 剩余空间所占百分比的宽度

         比如第一图片上的计算式子如下

          button1实际宽度 = 0 + 1/(1+2)L= 1/3L     button2实际宽度 = 0 +2/(1+2)L = 2/3L

         第二张图片上的计算式子如下 

          button1实际宽度 = L +1[L-(L+L)]/(1+2) L = 2/3 L    button2实际宽度 = L + 2[L-(L+L)]/(1+2) L = 1/3 L

         好了,看到这里weight属性是不是很好理解,最主要的是对剩余空间的理解 。

    2.weightSum属性

    android:weightSum属性在官方文档中的解释包含下面的内容:“定义weight综合的最大值,如果未指定该值,以所有子师徒的layout_weight属性的累加值作为总和的最大值。典型案例是:通过指定子视图的layout_weight属性为0.5.并设置LinearLayout的weightSum属性为1.0,实现子视图占据可用宽高的50%”。

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
     2     android:layout_width="match_parent"  
     3     android:layout_height="wrap_content"  
     4     android:gravity="center"  
     5     android:orientation="horizontal"  
     6     android:weightSum="1" >  
     7   
     8     <Button  
     9         android:layout_width="0dp"  
    10         android:layout_height="wrap_content"  
    11         android:layout_weight="0.5"  
    12         android:text="test" />  
    13   
    14 </LinearLayout>  

  • 相关阅读:
    程序猿和产品狗
    编写一个友元函数,求两个日期之间相差的天数
    集合的模拟实现(类模板)
    友元很简单2016final
    攻防世界-parallel-comparator-200
    web-GXYCTF2019 StrongestMind
    破解010Editor
    2020第三届江西省高校网络安全技能大赛线下解题赛部分wp
    pwn-EasyHeap(House of spirit)
    web-2020 ciscn littlegame(原型链污染)
  • 原文地址:https://www.cnblogs.com/edensyd/p/8862356.html
Copyright © 2011-2022 走看看