我有一个LinearLayout,其中2个按钮水平分割。
我希望这些按钮位于屏幕的底部,因此我添加到了布局中
android:layout_weight="bottom"
并且没有任何变化!
<?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:layout_width="fill_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2" >
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Start" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Stop" />
</LinearLayout>
</LinearLayout>
答案 0 :(得分:1)
您需要将按钮的layout_width
设置为0dp
。
此外,没有宽度属性:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2"
android:layout_alignParentBottom="true" >
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Start" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Stop" />
</LinearLayout>
</RelativeLayout>
答案 1 :(得分:1)
layout_weight用于在 layout_width或layout_height被考虑之后划分剩余空间。
当你说
时<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="Start"
android:width="0dp" />
android:layout_width="fill_parent"
表示将按钮的大小设置为与其父级一样宽。对水平线性布局中的两个按钮执行此操作将只生成一个可见按钮;第二个实际上位于第一个的右侧,但是在屏幕外。
如果您为两个按钮设置layout_width
至0dp
,则两个按钮的宽度都相同。
如果您在两个按钮上都设置layout_width
为wrap_content
,则两者都会以“首选”宽度开始,然后根据layout_width
的比例为其分配额外的空间到父布局中所有视图的layout_width
之和。
如果您想要底部的按钮,您可以将布局更改为相对布局(并使用其他答案中提到的alignParentBottom
),或嵌套在垂直线性布局内(水平布局将具有layout_height='wrap_content'
和layout_width='fill_parent'
)。
因为你提到了嵌套,你可以使用像
这样的东西<LinearLayout
andrdoid:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
...
>
<LinearLayout
anddoid:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
...
>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
... />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
... />
</LinearLayout>
</LinearLayout>
(或使用wrap_content
按钮的layout_width
以文字宽度启动它们
答案 2 :(得分:0)
将按钮上的layout_width参数更改为
android:layout_width="0dp"
您也可以使用layout_alignParentBottom
android:layout_alignParentBottom="true"
您可以像以下
一样创建布局文件<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<!-- Other Components of your layout file -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:weightSum="2">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Start"/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Stop"/>
</LinearLayout>
</RelativeLayout>
答案 3 :(得分:0)
你的标题说layout_weight不适合你,但问题正文暗示它工作得很好。 layout_weight
属性应该会使您的按钮占据每个宽度的一半。
屏幕底部的定位是另一个问题。根据您最近编辑过的xml,将android:gravity="bottom"
添加到父LinearLayout
,或android:layout_gravity="bottom"
添加到子LinearLayout
。