0

我有一个带有 2 个按钮的 LinearLayout 水平分割它。

我希望这些按钮位于屏幕底部,所以我添加到布局中 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>
4

4 回答 4

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>
于 2013-01-09T16:55:30.313 回答
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_widthto 0dp,则两个按钮将具有相同的宽度。

如果在两个按钮上都设置为layout_widthto ,则两个按钮都将从它们的“首选”宽度开始,然后根据它们与父布局中所有视图的总和的wrap_content比率为它们分配额外的空间。layout_widthlayout_width

如果您想要底部的按钮,您可以将布局更改为相对布局(并alignParentBottom按照其他答案中所述使用),或者嵌套在垂直线性布局中(水平布局将具有layout_height='wrap_content'and 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以文本宽度启动它们)

于 2013-01-09T17:09:59.833 回答
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>
于 2013-01-09T17:07:03.200 回答
0

你的标题说 layout_weight 不适合你,但问题正文暗示它工作得很好。该layout_weight属性应该使您的按钮占据每个按钮的一半宽度。

屏幕底部的定位是一个不同的问题。根据您最近编辑的 xml,添加android:gravity="bottom"到 parentLinearLayoutandroid:layout_gravity="bottom"child LinearLayout

于 2013-01-09T17:16:11.057 回答