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>  

  • 相关阅读:
    permission 文档 翻译 运行时权限
    TabLayout ViewPager Fragment 简介 案例 MD
    Log 日志工具类 保存到文件 MD
    OkHttp 官方wiki 翻译 MD
    Okhttp 简介 示例 MD
    OkHttp 官方Wiki之【使用案例】
    DialogPlus
    倒计时 总结 Timer Handler CountDownTimer RxJava MD
    RecyclerView 判断滑到底部 顶部 预加载 更多 分页 MD
    CSS3的媒体查询(Media Queries)与移动设备显示尺寸大全
  • 原文地址:https://www.cnblogs.com/edensyd/p/8862356.html
Copyright © 2011-2022 走看看