我不明白如何使用这个属性。谁能多告诉我一点吗?


当前回答

请查看LinearLayout的weightSum和每个视图的layout_weight。android:weightSum="4" android:layout_weight="2" android:layout_weight="2"他们的layout_height都是0px,但我不确定这是相关的

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="4">

<fragment android:name="com.example.SettingFragment"
    android:id="@+id/settingFragment"
    android:layout_width="match_parent"
    android:layout_height="0px"
    android:layout_weight="2"
    />

<Button
    android:id="@+id/dummy_button"
    android:layout_width="match_parent"
    android:layout_height="0px"
    android:layout_weight="2"
    android:text="DUMMY"
    />
</LinearLayout>

其他回答

简而言之,layout_weight指定了布局中要分配给View的额外空间的多少。

线性布局支持为各个子节点分配权重。此属性为视图分配了一个“重要性”值,并允许它展开以填充父视图中的任何剩余空间。视图的默认权重为0。

计算子节点之间的剩余空间

一般情况下,公式为:

分配给孩子的空间=(孩子的个人体重)/(线性布局中每个孩子的体重之和)

示例1

如果有三个文本框,其中两个声明权重为1,而第三个文本框没有权重(0),那么剩余空间的分配如下:

第一个文本框= 1/(1+1+0) 第二个文本框= 1/(1+1+0) 第三个文本框= 0/(1+1+0)

示例2

假设在水平行中有一个文本标签和两个文本编辑元素。标签没有指定layout_weight,因此它占用呈现所需的最小空间。如果这两个文本编辑元素的layout_weight都设置为1,父布局中的剩余宽度将在它们之间平均分配(因为我们声称它们同样重要)。

计算:

第一个标签= 0/(0+1+1) 第二个文本框= 1/(0+1+1) 第三个文本框= 1/(0+1+1)

如果第一个文本框的layout_weight为1,第二个文本框的layout_weight为2,那么剩余空间的三分之一将给第一个文本框,三分之二给第二个文本框(因为我们声称第二个文本框更重要)。

计算:

第一个标签= 0/(0+1+2) 第二个文本框= 1/(0+1+2) 第三个文本框= 2/(0+1+2)


文章来源

结合以下两个答案

Flo, rptwsthi和roetzi,

记住要改变你的layout_width=0dp/px,否则layout_weight行为将会相反,最大的数字占据最小的空间,最小的数字占据最大的空间。

此外,一些权重组合会导致一些布局无法显示(因为它过度占用空间)。

当心这一点。

除了其他答案之外,最重要的是将布局宽度(或高度)设置为0px

android:layout_width="0px"

否则你会看到垃圾

那样想的话,会简单些

如果你有3个按钮,它们的权重分别为1,3,1,它将像HTML中的表格一样工作

为这一行提供5份:1份用于按钮1,3份用于按钮2,1份用于按钮1

方面,

http://developer.android.com/guide/topics/ui/layout-objects.html#linearlayout

Layout_weight定义了控件相对于其他控件必须获得的空间大小。