• android:layout_weight 和 android: weightSum的使用


    一. 在LinearLayout 布局下使用 weight作为一个view在父View下的权重

    一个View的空间根据设置的原始空间 + 按比例分割的空间 = 最后显示的空间

    常用的方法:

    1 . 可以这样设置每个子View得到平均的空间

    每个子View设置为width="fill_parent" 或者height = "0dp" ,weight="1"

    通过计算可以知道这是为什么

    假设一个父View的总空间为 p

    有n个子View需要均匀显示,设置为fill_parent 的话,空间也就是充满父View 即p

    剩余空间 = p - n*p = (1-n)*p ;

    每个分割的空间按比例来得到,均匀的话则是 1/n * p*(1-n)

    然后得到每个的空间 = 基础的空间 + 分割的空间  =  p +   (1-n)*p * 1/n 

    经过化简后得到 每个的空间 等于 1/n * p = p/n ,这样就是均等显示了

    2 每个子View设置为width="0dp" 或者height = "0dp" ,weight="1"

    那么根据公式来计算一下,也就是

    剩余空间为 p - 0 * n = p

    按比例分割的空间 = 1/n * p

    最后每个分配的空间 = 0 + p/n = p/n ,这样就均等显示了

    3.想根据给的weight来分配空间

    每个子View 的width=" 0dp" ,然后根据每个weight的需要的比例分割就是了

    二 .weightSum 作为这个父View的总分割份数

    如果 在父View中需要提供指定的空间给子View使用,就可以使用weightSum来指定

    每个子View根据父类提供的空间分配份数

    贴出代码和结果

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:orientation="vertical" >
     6 
     7     <LinearLayout
     8         android:layout_width="match_parent"
     9         android:layout_height="wrap_content"
    10         android:orientation="horizontal" >
    11 
    12         <TextView
    13             android:layout_width="0dp"
    14             android:layout_height="wrap_content"
    15             android:layout_weight="1"
    16             android:background="#ff0"
    17             android:text="hello 1" />
    18 
    19         <TextView
    20             android:layout_width="0dp"
    21             android:layout_height="wrap_content"
    22             android:layout_weight="1"
    23             android:background="#f00"
    24             android:text="hello 2" />
    25 
    26 
    27         <TextView
    28             android:layout_width="0dp"
    29             android:layout_height="wrap_content"
    30             android:layout_weight="1"
    31             android:background="#ffa"
    32             android:text="hello 3" />
    33     </LinearLayout>
    34 
    35 </LinearLayout>

    使用weightSum 分割需要的比例

      1 <?xml version="1.0" encoding="utf-8"?>
      2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      3     android:layout_width="match_parent"
      4     android:layout_height="match_parent"
      5     android:orientation="vertical" >
      6 
      7     <LinearLayout
      8         android:layout_width="match_parent"
      9         android:layout_height="wrap_content"
     10         android:layout_marginTop="20dp"
     11         android:background="@color/backColor"
     12         android:orientation="horizontal"
     13         android:weightSum="10.0" >
     14 
     15         <TextView
     16             android:layout_width="0dp"
     17             android:layout_height="wrap_content"
     18             android:layout_weight="1"
     19             android:background="#ff0"
     20             android:text="hello 1" />
     21 
     22         <TextView
     23             android:layout_width="0dp"
     24             android:layout_height="wrap_content"
     25             android:layout_weight="1"
     26             android:background="#f00"
     27             android:text="hello 2" />
     28 
     29         <TextView
     30             android:layout_width="0dp"
     31             android:layout_height="wrap_content"
     32             android:layout_weight="1"
     33             android:background="#ffa"
     34             android:text="hello 3" />
     35 
     36         <TextView
     37             android:layout_width="0dp"
     38             android:layout_height="wrap_content"
     39             android:layout_weight="1"
     40             android:background="#ff0"
     41             android:text="hello 1" />
     42 
     43         <TextView
     44             android:layout_width="0dp"
     45             android:layout_height="wrap_content"
     46             android:layout_weight="1"
     47             android:background="#f00"
     48             android:text="hello 2" />
     49 
     50         <TextView
     51             android:layout_width="0dp"
     52             android:layout_height="wrap_content"
     53             android:layout_weight="1"
     54             android:background="#ffa"
     55             android:text="hello 3" />
     56 
     57         <TextView
     58             android:layout_width="0dp"
     59             android:layout_height="wrap_content"
     60             android:layout_weight="1"
     61             android:background="#ff0"
     62             android:text="hello 1" />
     63 
     64         <TextView
     65             android:layout_width="0dp"
     66             android:layout_height="wrap_content"
     67             android:layout_weight="1"
     68             android:background="#f00"
     69             android:text="hello 2" />
     70 
     71         <TextView
     72             android:layout_width="0dp"
     73             android:layout_height="wrap_content"
     74             android:layout_weight="1"
     75             android:background="#ffa"
     76             android:text="hello 3" />
     77     </LinearLayout>
     78 
     79     <LinearLayout
     80         android:layout_width="match_parent"
     81         android:layout_height="wrap_content"
     82         android:layout_marginTop="20dp"
     83         android:background="@color/backColor"
     84         android:orientation="horizontal"
     85         android:weightSum="12.0" >
     86 
     87         <TextView
     88             android:layout_width="0dp"
     89             android:layout_height="wrap_content"
     90             android:layout_weight="1"
     91             android:background="#ff0"
     92             android:text="hello 1" />
     93 
     94         <TextView
     95             android:layout_width="0dp"
     96             android:layout_height="wrap_content"
     97             android:layout_weight="1"
     98             android:background="#f00"
     99             android:text="hello 2" />
    100 
    101         <TextView
    102             android:layout_width="0dp"
    103             android:layout_height="wrap_content"
    104             android:layout_weight="1"
    105             android:background="#ffa"
    106             android:text="hello 3" />
    107 
    108         <TextView
    109             android:layout_width="0dp"
    110             android:layout_height="wrap_content"
    111             android:layout_weight="1"
    112             android:background="#ff0"
    113             android:text="hello 1" />
    114 
    115         <TextView
    116             android:layout_width="0dp"
    117             android:layout_height="wrap_content"
    118             android:layout_weight="1"
    119             android:background="#f00"
    120             android:text="hello 2" />
    121 
    122         <TextView
    123             android:layout_width="0dp"
    124             android:layout_height="wrap_content"
    125             android:layout_weight="1"
    126             android:background="#ffa"
    127             android:text="hello 3" />
    128 
    129         <TextView
    130             android:layout_width="0dp"
    131             android:layout_height="wrap_content"
    132             android:layout_weight="1"
    133             android:background="#ff0"
    134             android:text="hello 1" />
    135 
    136         <TextView
    137             android:layout_width="0dp"
    138             android:layout_height="wrap_content"
    139             android:layout_weight="1"
    140             android:background="#f00"
    141             android:text="hello 2" />
    142 
    143         <TextView
    144             android:layout_width="0dp"
    145             android:layout_height="wrap_content"
    146             android:layout_weight="1"
    147             android:background="#ffa"
    148             android:text="hello 3" />
    149 
    150         <TextView
    151             android:layout_width="0dp"
    152             android:layout_height="wrap_content"
    153             android:layout_weight="1"
    154             android:background="#ff0"
    155             android:text="hello 1" />
    156 
    157         <TextView
    158             android:layout_width="0dp"
    159             android:layout_height="wrap_content"
    160             android:layout_weight="1"
    161             android:background="#f00"
    162             android:text="hello 2" />
    163 
    164         <TextView
    165             android:layout_width="0dp"
    166             android:layout_height="wrap_content"
    167             android:layout_weight="1"
    168             android:background="#ffa"
    169             android:text="hello 3" />
    170     </LinearLayout>
    171 
    172 </LinearLayout>

    weightSum = 10 ,设置了9个TextView ,每个weight = 1

    weightSum = 12 ,设置了12个TextView,每个weight = 1

     1 <LinearLayout
     2         android:layout_width="match_parent"
     3         android:layout_height="wrap_content"
     4         android:layout_marginTop="20dp"
     5         android:background="@color/backColor"
     6         android:orientation="horizontal"
     7         android:weightSum="10" >
     8 
     9         <TextView
    10             android:layout_width="0dp"
    11             android:layout_height="wrap_content"
    12             android:layout_weight="2"
    13             android:background="#ff0"
    14             android:text="hello 1" />
    15 
    16         <TextView
    17             android:layout_width="0dp"
    18             android:layout_height="wrap_content"
    19             android:layout_weight="3"
    20             android:background="#f00"
    21             android:text="hello 2" />
    22 
    23         <TextView
    24             android:layout_width="0dp"
    25             android:layout_height="wrap_content"
    26             android:layout_weight="4"
    27             android:background="#ffa"
    28             android:text="hello 3" />
    29 
    30         <TextView
    31             android:layout_width="0dp"
    32             android:layout_height="wrap_content"
    33             android:layout_weight="1"
    34             android:background="#ff0"
    35             android:text="hello 1" />
    36     </LinearLayout><LinearLayout
    37         android:layout_width="match_parent"
    38         android:layout_height="wrap_content"
    39         android:layout_marginTop="20dp"
    40         android:background="@color/backColor"
    41         android:orientation="horizontal"
    42         android:weightSum="10" >
    43 
    44         <TextView
    45             android:layout_width="0dp"
    46             android:layout_height="wrap_content"
    47             android:layout_weight="2"
    48             android:background="#ff0"
    49             android:text="hello 1" />
    50 
    51         <TextView
    52             android:layout_width="0dp"
    53             android:layout_height="wrap_content"
    54             android:layout_weight="3"
    55             android:background="#f00"
    56             android:text="hello 2" />
    57 
    58         <TextView
    59             android:layout_width="0dp"
    60             android:layout_height="wrap_content"
    61             android:layout_weight="4"
    62             android:background="#ffa"
    63             android:text="hello 3" />
    64 
    65         <TextView
    66             android:layout_width="0dp"
    67             android:layout_height="wrap_content"
    68             android:layout_weight="1"
    69             android:background="#ff0"
    70             android:text="hello 1" />
    71     </LinearLayout>

    定义了weightSum = 10 

    每个对应的weight

     2           3            4        1

  • 相关阅读:
    从高版本JDK换成低版本JDK报错Unsupported major.minor version 52.0
    永远不要祈求生活来怜悯你,你只能让自己变的更强
    69 个经典 Spring 面试题和答案
    Jackson 框架,轻易转换JSON
    Apache Commons Codec 编码解码
    演讲
    Shiro源码分析-初始化-Realm
    各个JSON技术的比较
    常见数据库设计(2)——历史数据问题之单记录变更
    fiddler
  • 原文地址:https://www.cnblogs.com/act262/p/3624359.html
Copyright © 2020-2023  润新知