精华内容
下载资源
问答
  • weightSum与weight

    2019-02-14 11:22:19
    如果 android:weightSum 没有定义,那么默认值就是通过各个子类的 layout_weight 累加得到。 <?xml version="1.0" encoding="utf-8"?&amp

    weight:

    该控件能在屏幕中占据多大的空间(权重、比重)。

    这个值越大,表明该控件可以在父控件中占据较多的“剩余”空间。默认的weight是0。

    weightSum:

    定义了weight 总和的最大值。
    如果 android:weightSum 没有定义,那么默认值就是通过各个子类的 layout_weight 累加得到。

    示例:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <!--
            weight:
            该控件能在屏幕中占据多大的空间。这个值越大,表明该控件可以在父控件中占据较多的“剩余”空间。默认的weight是0。
            weightSum:
            定义了weight 总和的最大值。
            如果 android:weightSum 没有定义,那么默认值就是通过各个子类的 layout_weight 累加得到
        -->
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:baselineAligned="false"
            android:orientation="horizontal">
    
            <!--
                假设屏幕的宽度为L
                实际宽度 = 控件原来的长度 + 剩余空间所占百分比的宽度
                LinearLayout1实际宽度 = 0 + (L-0-0) * 1/(1+2)= 1/3L
                LinearLayout2实际宽度 = 0 + (L-0-0) * 2/(1+2) = 2/3L
            -->
    
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@color/colorPrimary" />
    
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:background="@color/colorAccent" />
        </LinearLayout>
    
    
        <android.support.v4.widget.Space
            android:layout_width="match_parent"
            android:layout_height="5dp" />
    
        <!-- wrap_content 效果此处类似 0dp ,但不推荐此种写法-->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:baselineAligned="false"
            android:orientation="horizontal">
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@color/colorPrimary" />
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:background="@color/colorAccent" />
        </LinearLayout>
    
        <android.support.v4.widget.Space
            android:layout_width="match_parent"
            android:layout_height="5dp" />
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:baselineAligned="false"
            android:orientation="horizontal">
    
            <!--
                假设屏幕的宽度为L
                实际宽度 = 控件原来的长度 + 剩余空间所占百分比的宽度
                LinearLayout1实际宽度 = L + [L-(L+L)] * 1/(1+2) = 2/3 L
                LinearLayout2实际宽度 = L + [L-(L+L)] * 2/(1+2) = 1/3 L
            -->
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@color/colorPrimary" />
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:background="@color/colorAccent" />
        </LinearLayout>
    
    
        <android.support.v4.widget.Space
            android:layout_width="match_parent"
            android:layout_height="5dp" />
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:baselineAligned="false"
            android:orientation="horizontal"
            android:weightSum="9">
    
            <!--
                假设屏幕的宽度为L
                实际宽度 = 控件原来的长度 + 剩余空间所占百分比的宽度
                LinearLayout1实际宽度 = L + [L-(L+L)] * 1/9 = 8/9 L
                LinearLayout2实际宽度 = L - 8/9L = 1/9L
            -->
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@color/colorPrimary" />
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:background="@color/colorAccent" />
        </LinearLayout>
    
        <android.support.v4.widget.Space
            android:layout_width="match_parent"
            android:layout_height="5dp" />
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:baselineAligned="false"
            android:orientation="horizontal"
            android:weightSum="9">
    
            <!--
                假设屏幕的宽度为L
                实际宽度 = 控件原来的长度 + 剩余空间所占百分比的宽度
                LinearLayout1实际宽度 = 0 + [L-(0+0)] * 1/9 = 1/9 L
                LinearLayout2实际宽度 = 0 + [L-(0+0)] * 2/9 = 2/9 L
            -->
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@color/colorPrimary" />
    
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:background="@color/colorAccent" />
        </LinearLayout>
    
    </LinearLayout>
    

    效果图:

    在这里插入图片描述

    展开全文
  • weightSum和layout_weight

    2016-11-21 11:33:19
    一、weightSum举个例子来说明weightSum,例如android:weightSum=”5” 表示这个LinearLayout总共平分成5块大小区域;然后再LinearLayout里面的控件,使用android:layout_wetght=“1”,这表示它占用整个布局的1/5。...

    一、weightSum

    举个例子来说明weightSum,例如android:weightSum=”5” 表示这个LinearLayout总共平分成5块大小区域;然后再LinearLayout里面的控件,使用android:layout_wetght=“1”,这表示它占用整个布局的1/5。但是要注意要约束的是宽的话要设置android:layout_with=”0dp”。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="5"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    
        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="#f0e"
            android:layout_weight="1"
            android:text="TextView1" />
        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="#0fe"
            android:layout_weight="3"
            android:text="ThisIsTextView2"
            />
    </LinearLayout>

    将屏幕宽度分为5份,第一个占1份,第二个占3份;就张下面的样子。

    这里写图片描述

    二、layout_weight

    他的作用是分配LinearLayout额外的空间。

    接下来看图说话哈:

    先看布局,布局为线型水平排列的两个TextView,布局如下:

    <!--注意这里的宽度为match_parent,否则看不到效果-->
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:tools="http://schemas.android.com/tools"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal" >
    
         <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#f0e"
            android:text="TextView1" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#0fe"
            android:text="ThisIsTextView2"
            />
     </LinearLayout>

    1、没有分配权重时:

    这里写图片描述

    接下来给两个TextView分配权重,第一个的权值为1,第二个为2

    2、当android:layout_width=”wrap_content

    这里写图片描述

    首先两个TextView的宽度设为wrap_content,我门之前提过android:layout_weight是分配剩余的空间。所以在两个TextView分配完自己应得的宽度后,把剩余的部分划分为3份(权值的1+2=3),第一个TextView分的1/3,第二个TextView分的2/3,然后就变成这样了。

    3、当android:layout_width=”0dp”

    这里写图片描述

    当两个TextView的宽度设为0dp后样子就不同了吧,我们设置他的宽度为0,就是相当于省去了分配自己宽度的步骤,就直接将剩余的部分分为3份,第一个TextView分到1/3,第二个分到2/3。

    4、当android:layout_width=”match_parent”

    这里写图片描述

    是不是看到这有一点点蒙圈呢,一定要记住他的作用是分配剩余的内容。这两个TextVIew的宽度都是填充父窗口,本身的宽度就是match_parent,下面计算一下:

    • 1)看看还剩多少空间

    match_parent-match_parent-match_parent=-match_parent剩余的空间为-match_parent;

    • 2)将剩余的空间分份,每分占多少

    -match_parent/(1+2)=-match_parent/3;

    第一个TextView应分得的剩余空间:-match_parent/3;

    第二个TextView应分得的剩余空间:-2*match_parent/3;

    • 3)计算看看每个View真实的宽度

    第一个TextView的真实宽度:match_parent+(-match_parent/3)=match_parent*2/3;

    第二个TextView的真实宽度:match_parent+(-2*match_parent/3)=match_parent/3;

    计算完之后就是上面的样子了,其实上两种情况也是通过这样的计算方式计算得到的。

    公式(水平排列的哈):

    View的真实宽度=View的初初始宽度+剩余的宽度/所有View权重加和*该View所占权重值

    剩余的宽度=父View的宽度-所有View的宽度

    自我总结:

    weightSum是将整体平均分多少份然后利用权重,给每个View分配应占空间。

    layout_weight是分配剩余空间(是剩余的)

    展开全文
  • weight和weightSum的区别

    千次阅读 2017-08-22 14:23:08
    说起weight大家肯定都非常的清楚它的使用,可是weightSum恐怕有很多人不是很清楚,起码今天前我是不知道的,哈哈,来个笔记记录下二者的区别

    说起weight大家肯定都非常的清楚它的使用,可是weightSum恐怕有很多人不是很清楚,起码今天前我是不知道的,哈哈,来个笔记记录下二者的区别。

    一:weight的使用

    来个例子,简单明了。

    布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="horizontal">
    
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="占50%" />
    
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="占50%" />
    
    </LinearLayout>
    从布局文件,可以看出两个button,设置的weight分别为1,既二者占用的比例一样,各占50%的宽度。weight的占比计算为:父布局的-其他的占用空间,剩下的按照所有weight的比例来分。

       布局效果图:

       


    二:weightSum的使用

        布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="horizontal"
        android:weightSum="1">
    
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:text="@string/hello_world" />
    
    </LinearLayout>
    效果图:
       

    内部的计算原理是:
    Button的宽度 = Button 的 width + Button的weight * 父布局(LinearLayout)的宽度 / weightSum
    上面的例子,也就是 Button的宽度 = 0 + 0.5 * LinearLayout的宽度 / 1 = 0.5 * LinearLayout的宽度
    也就是Button的宽度将占屏幕的一半。





    展开全文
  • layout_weight 和 weightSum

    2016-08-28 00:44:45
    LinearLayout的layout_weight给适配带来了很多方便, 但有些新司机不是很了解父布局中还有一个weightSum属性 android:layout_wi

    LinearLayout的layout_weight给适配带来了很多方便, 但有些新司机不是很了解父布局中还可以设置一个weightSum属性

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorAccent"
        android:gravity="center_horizontal"
        android:orientation="horizontal"
        android:weightSum="2">
    
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Weight" />
    
    </LinearLayout>
    

    这里写图片描述

    这里写图片描述

    如果LinearLayout 中没有android:weightSum=”2”这句
    Button宽度将充满整个LinearLayout, 有了这个后, 无论横竖屏, 都刚好是父布局宽度的一半.

    也就是, 如果不指定父布局的android:weightSum, 则以所有子视图的 layout_weight 属性的累加值作为总和的最大值。如果指定了, 则总的就是我们指定的值.
    如上面, 指定了2, 子控件是1, 那么子控件为父容器的一半.

    展开全文
  • if weightsum is possible to be 0, should we have code <pre><code>for _, task := range r.tasks { percent := float64(task.Weight) / float64(weightSum) if weightSum == 0 { amount =...
  • 提问:如果一个布局里面只有一...对于layout_weight这个属性大家应该还是很熟悉的,但是对于weightSum我就很少用到了。实现上面的问题,具体代码如下: android:weightSum="2" android:layout_width="match_parent
  • 注意:上一级控使用件weightSum时,子项控件的android:layout_height设置为0dp,否则分割不生效: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=...
  • 先看一下weightSum属性的功能描述:定义weight总和的最大值。如果未指定该值,以所有子视图的layout_weight属性的累加值作为总和的最大值。把weightSum的定义搁在这里,先去看看android:layout_weight如何使用。  ...
  • layout_weight和weightSum

    2014-09-23 10:33:11
    在编写HTML页面的时候,为了编写出多分辨率适配的页面,通常不会... layout_weight表示占用容器剩余空间的比例,而容器有个属性为weightSum表示比例的总数。比如下面的布局文件:  android:orientation="horizont
  • 带你理解Android中weight和weightSum的定义和工作原理。
  • <p>So far it looks kinda messy, so what I want, is to be able to set weightsum on headers, and thereafter gravIty set to center, so that they are aligned smoothly. <p>I have 5x headers = {"...
  • 讲解一:weightSum和layout_weight属性合用 android:weightSum属性:定义weight总和的最大值。如果为指定该值,所有子视图的layout_weight属性的累加值作为总和的最大值。例如,通过指定子视图的layout_weight属性...
  • weightSum是LinearLayout的属性,定义weight的总和。如果未指定该值,以LinearLayout中所有子视图的layout_weight属性的累加值作为总和。layout_weight是LinearLayout中的子视图使用有效的属性,用于将剩余空间按照...
  • 首先声明:1).weightSum用于父容器  2).layout_weight用于子容器 那么就可能出现一下几种情况:  1).当父容器weightSum=各子容器weight的总和时,或者父容器没有声明weightSum,则效果为:各子容器按照weight比例...
  • Leetcode 339 Nested List Weight Sum // This is the interface that allows for creating nested lists. // You should not implement it, or speculate about its implementation * public interface NestedI...
  • 339. Nested List Weight Sum

    2019-02-28 23:08:30
    339. Nested List Weight Sum方法1:易错点 Given a nested list of integers, return the sum of all integers in the list weighted by their depth. Each element is either an integer, or a list – whose ...
  • Leetcode 364 Nested List Weight Sum II BFS 遇到数字,加入preSum。 遇到list, 加入queue。 每层都把sum += preSum。 For example: [1,[4,[6]]] preSum = 1 ->Sum = 1 preSum = 5 -> Sum = 6 preSum = 11 -&...
  • 一个Button占据整个屏幕的一半宽度,开发文档中对layout_weight属性的...一个典型的案例是:通过指定子视图的layout_weight属性为0.5,并设置LinearLayout的weightSum属性为1.0,实现子视图占据可用宽度的50。” XML
  • Nested List Weight Sum Given a nested list of integers, return the sum of all integers in the list weighted by their depth. Each element is either an integer, or a list – whose elements may also be i...
  • 364. Nested List Weight Sum II方法1:易错点: Given a nested list of integers, return the sum of all integers in the list weighted by their depth. Each element is either an integer, or a list – whose ...
  • weight和weightSum

    2017-06-28 15:39:03
    不就是通过weight来给子布局按比例来分配空间嘛!好,这个答案也对也不对。 此时有人会疑惑了,为什么也对也不对? 我先来举两个最常见的例子: xml version="1.0" encoding="utf-8"?> LinearLayout xmlns:android=...
  • 特别是当我们要实现几个控件平均分割一定的区域的时候,一般都会通过LinearLayout的layout_weight和weightsum组合实现。要理解layout_weight和weightsum这2个属性对LinearLayout布局大小的影响,最好还是结合源码...
  • Nested List Weight Sum https://leetcode.com/problems/nested-list-weight-sum/ Given a nested list of integers, return the sum of all integers in the list weighted by their depth. Each el
  • Nested List Weight Sum Given a nested list of integers, return the sum of all integers in the list weighted by their depth. Each element is either an integer, or a list -...
  • 在xml中有个属性我们很少用到,但它很有用,就是android:weightSum属性,下面我们讲解他的属性和用法 将按钮居中显示,并且占据其父视图宽度的一半,应该怎么做呢,肯定读者会有很多种不同的做法 如何结合...
  • 在LinearLayout中,巧妙使用weightSum和layout_weight

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,608
精华内容 643
关键字:

weightsum