我总是在Android文档中读到这个有趣的重量值 . 现在我想第一次尝试它,但它根本不起作用 .
据我所知,这个布局的文件:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:text="Register"
android:id="@+id/register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
weight="1" />
<Button
android:text="Not this time"
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
weight="1" />
</LinearLayout>
应创建两个水平对齐的按钮,并平等分享空间 . 问题是两个按钮不会增长以填充空间 .
我想按钮增长并填满整行 . 如果两个按钮都设置为仅匹配父按钮,则显示第一个按钮并填充整行 .
18 回答
另外,您需要为
LinerLayout
的儿童视图[按钮视图]添加此android:layout_width="0dp"
这是您问题的完美答案
以下是代码中的更改(标记为 BOLD ):
由于LinearLayout的方向为水平方向,因此您需要保持 width only as 0dp. 以便在该方向上使用权重 . (如果你的方向是垂直的,你的高度只有0dp) .
由于有两个视图,并且您为两个视图放置了
android:layout_weight="1"
,这意味着它将在水平方向(或宽度)上平均分割两个视图 .尝试将两个按钮的
layout_width
设置为"0dip",将两个按钮的weight
设置为0.5
用
fill_parent
代替wrap_content
.要记住的3件事:
将孩子的 android:layout_width 设置为 "0dp"
设置父级的 android:weightSum (编辑:正如Jason Moore注意到的,此属性是可选的,因为默认情况下它设置为子级的layout_weight总和)
按比例设置每个孩子的 android:layout_weight (例如weightSum = "5",三个孩子:layout_weight = "1",layout_weight = "3",layout_weight = "1")
例:
结果如下:
喜欢回答@Manoj Seelan
用
android:weight
替换android:layout_weight
.当 Weight 与
LinearLayout
一起使用时 . 您必须在LinearLayout
中添加weightSum
并根据LinearLayout
的方向,您必须将0dp
为宽度/高度设置为所有LinearLayout
的子视图示例:
If
Linearlayout
的方向是Vertical
,然后用0dp
设置所有LinearLayout
的子视图的宽度If 方向
Linearlayout
是horizontal
,然后使用0dp
设置所有LinearLayout
的子视图的高度 .你必须这样写它为我工作
您没有设置
layout_weight
属性 . 您的代码为weight="1"
,应为android:layout_weight="1"
.在按钮的宽度字段中,将
wrap-content
替换为0dp
.使用视图的layout_weight属性 .
这就是你的代码的样子:
layout_weight用于将任何左侧空间分配为比例 . 在这种情况下,两个按钮的宽度为“0dp” . 因此,剩余空间将被分成1:1的比例,即空间将在按钮视图之间平均分配 .
这是
android:layout_weight
. 重量只能在LinearLayout
中使用 . 如果linearlayout的方向为Vertical,则使用android:layout_height="0dp"
,如果方向为水平,则使用android:layout_width = "0dp"
. 它会很完美 .也许将两个按钮layout_width属性设置为“fill_parent”就可以了 .
我刚刚测试了这段代码,它可以在模拟器中运行:
务必在两个按钮上将layout_width设置为“fill_parent” .
在上面的XML中,将线性布局的
android:layout_weight
设置为2
:android:layout_weight="2"
LinearLayout支持为各个孩子分配权重 . 此属性为视图指定“ importance ”值,并允许它展开以填充父视图中的任何剩余空间 . 默认权重为零
计算以在子项之间分配任何 Remaining/Extra 空格 . (不是总空间)
空间分配给孩子=(儿童个人体重)/(线性布局中每个孩子的体重总和)
Example (1): 如果有三个文本框,其中两个声明权重为1,而第三个没有赋予权重(0),则 Remaining/Extra 空间分配给
Example (2) :假设我们在水平行中有一个文本标签和两个文本编辑元素 . 标签没有指定layout_weight,因此它占用了渲染所需的最小空间 . 如果两个文本编辑元素中每个文本编辑元素的layout_weight设置为1,则父布局中的剩余宽度将在它们之间平均分配(因为我们声称它们同样重要) .
如果第一个文本框的layout_weight为1,第二个文本框的layout_weight为2,则剩余空间的三分之一将被赋予第一个,而三分之二将被赋予第二个(因为我们声称第二个是更重要) .
此图像总结了线性布局 .
您可以点击此链接获取更多信息话题 . Just Maths - Views, View Groups and Layouts
Video Tutorial For Linear Layout : Width, Height & Weights
Android Linear Layout Tutorial