按钮在 LinearLayout 中的位置

Position of buttons in LinearLayout

我添加了 5 个按钮(见下文),我需要重置按钮应与上述两个按钮对齐,以保持统一。此外,我无法将提交按钮准确对齐到 GoodButton 下方。

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="2dp"
            android:layout_weight="0"
            android:text="1" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="4dp"
            android:layout_weight="0"
            android:text="1" />


        <View
            android:layout_width="1dp"
            android:layout_height="match_parent"
            android:layout_weight="0"
            android:background="@android:color/darker_gray"></View>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="4dp"
            android:layout_weight="2"
            android:text="Good" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">


        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="4dp"
            android:layout_weight="1"
            android:text="Reset" />


        <View
            android:layout_width="1dp"
            android:layout_height="match_parent"
            android:layout_weight="0"
            android:background="@android:color/darker_gray"></View>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="4dp"
            android:layout_weight="1"
            android:text="Submit" />
    </LinearLayout>

</LinearLayout>

我觉得这是由于我在顶部按钮上添加了额外的布局边距 space。

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_weight="1"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1">
            <Button android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"></Button>
            <Button android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"></Button>
        </LinearLayout>

        <Button android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"></Button>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_weight="1"
        android:layout_height="match_parent">
        <Button android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"></Button>
        <Button android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"></Button>
    </LinearLayout>

</LinearLayout>

使用它,正是您所需要的

使用嵌套权重会带来性能问题。 使用相对布局可以很容易地实现这种设计。

检查此代码

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
    android:id="@+id/layout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="1"
    android:layout_margin="10dp">
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.25"
        android:text="1" />
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.25"
        android:text="2" />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="5"
        android:text="3" />
</LinearLayout>

<LinearLayout
    android:layout_below="@+id/layout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="1"
    android:layout_margin="5dp">
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:text="4" />
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:text="5" />

</LinearLayout>

你的问题是你没有很好地分配浏览量。 您必须对两个水平 LinearLayout 应用权重,然后尝试平均分配它们的子视图的权重。

看我上面的例子:

<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="match_parent"
android:padding="5dp"
android:orientation="vertical">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="2"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_width="0dip"
        android:layout_height="match_parent"
        android:layout_weight="1">


    <Button
        android:layout_width="0dip"
        android:layout_height="match_parent"
        android:layout_weight=".5"/>

    <Button
        android:layout_width="0dip"
        android:layout_height="match_parent"
        android:layout_weight=".5" />
    </LinearLayout>


    <Button
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Good" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">


    <Button
        android:layout_width="0dip"
        android:layout_height="match_parent"
        android:layout_marginRight="4dp"
        android:layout_weight="1"
        android:text="Reset" />



    <Button
        android:layout_width="0dip"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="Submit" />
</LinearLayout>

您也可以像这样使用 TableLayout:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="match_parent"
             android:layout_height="wrap_content">
    <TableRow>
        <Button
            android:layout_marginRight="2dp"
            android:text="1" />
        <Button
            android:layout_marginRight="4dp"
            android:text="1" />
        <View
            android:layout_width="1dp"
            android:layout_height="match_parent"
            android:background="@android:color/darker_gray" />
        <Button
            android:layout_marginLeft="4dp"
            android:layout_weight="1"
            android:text="Good" />
    </TableRow>
    <TableRow>
        <Button
            android:layout_marginRight="4dp"
            android:layout_span="2"
            android:text="Reset" />
        <View
            android:layout_width="1dp"
            android:layout_height="match_parent"
            android:background="@android:color/darker_gray" />
        <Button
            android:layout_marginLeft="4dp"
            android:layout_weight="1"
            android:text="Submit" />
    </TableRow>
</TableLayout>