在一行中设置三个按钮(水平)android studio with LinearLayout

set three button in a line (Horizontally) android studio with LinearLayout

我正在开发一个 android 应用程序来学习。 并面临一些问题。 不能设置两个按钮中心。 我已经用这个设置了两个按钮 现在我需要在这两个中间的另一个按钮 视图将与 this

一样
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_gravity="start"
        android:gravity="start">

        <Button
            android:id="@+id/dialog_positive_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Set"
            android:background="#dde5ad" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_gravity="end"
        android:gravity="end">

        <Button
            android:id="@+id/dialog_negative_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="No"
            android:background="#dde5ad" />
    </LinearLayout>

我需要这两个的中心。

使用layout_weight

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="3"
    android:orientation="horizontal">

    <Button
        android:id="@+id/dialog_positive_btn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="#dde5ad"
        android:text="Set" />

    <Button
        android:id="@+id/dialog_neutral_btn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="#dde5ad"
        android:layout_weight="1"
        android:text="your text" />

    <Button
        android:id="@+id/dialog_negative_btn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="#dde5ad"
        android:layout_weight="1"
        android:text="No" />

</LinearLayout>

您需要为此使用 layout_weight & layout_gravity

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="start"
        android:layout_weight="1"
        android:gravity="start"
        android:orientation="vertical">

        <Button
            android:id="@+id/dialog_positive_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#dde5ad"
            android:text="Set" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:orientation="vertical">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#dde5ad"
            android:text="Set" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="end"
        android:gravity="end"
        android:orientation="vertical">

        <Button
            android:id="@+id/dialog_negative_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#dde5ad"
            android:text="No" />
    </LinearLayout>
</LinearLayout>

您可以摆脱不必要的线性布局。如果你只需要在一行中添加三个按钮,你可以只在水平 LinearLayout 上这样做:

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
    <Button
        android:id="@+id/dialog_positive_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Set"
        android:background="#dde5ad"
        />

    <!-- this is your new Button -->
     <Button
        android:id="@+id/new_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Set"
        android:background="#dde5ad"
        />

    <Button
        android:id="@+id/dialog_negative_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="No"
        android:background="#dde5ad"
        />
</LinearLayout>

另请注意,嵌套 lienar 布局可能会影响您的性能。如果您需要进行复杂的布局,请尝试 constraint layout

希望对您有所帮助,编码愉快!

您应该尝试为每个按钮设置 android:layout_weight="1",每个按钮占用可用空间的 1/3宽度,使它们在水平方向上均匀分布。请参阅下面的布局,您有 2 个选项来获得相似的结果,一个使用 gravity 而另一个 layout_weight。最终结果类似,但带有 layout_weight="1" 的选项更可取:

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

        <Button
            android:id="@+id/dialog_positive_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Set"
            android:background="#dde5ad"
            />

        <Button
            android:layout_marginStart="20dp"
            android:id="@+id/center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Center"
            android:background="#dde5ad"
            />


        <Button
            android:layout_marginStart="20dp"
            android:id="@+id/dialog_negative_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="No"
            android:background="#dde5ad"
            />
    </LinearLayout>

或者你有第二个选项:

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

        <Button
            android:id="@+id/dialog_positive_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Set"
            android:background="#dde5ad"
            />

        <Button
            android:layout_weight="1"
            android:layout_marginStart="20dp"
            android:id="@+id/center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Center"
            android:background="#dde5ad"
            />


        <Button
            android:layout_weight="1"
            android:layout_marginStart="20dp"
            android:id="@+id/dialog_negative_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="No"
            android:background="#dde5ad"
            />
    </LinearLayout>

使用这个 -

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="start"
        android:gravity="start">

        <Button
            android:id="@+id/dialog_positive_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Set"
            android:background="#dde5ad"
            />
    </LinearLayout>
 <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="center"
        android:gravity="center">

        <Button
            android:id="@+id/dialog_negative_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="No"
            android:background="#dde5ad"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="end"
        android:gravity="end">

        <Button
            android:id="@+id/dialog_negative_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="No"
            android:background="#dde5ad"
            />
    </LinearLayout>
    </LinearLayout>

在使用LinearLayout的时候有一个LayoutWeights的概念,涉及面比较广,建议大家看一下官方文档LinearLayout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#dde5ad"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal">

<Button
    android:id="@+id/dialog_positive_btn"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="#dde5ad"
    android:text="Set" />

<View
    android:layout_width="1dp"
    android:layout_height="match_parent"
    android:layout_marginTop="14dp"
    android:layout_marginBottom="14dp"
    android:background="#000" />

<Button
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="#dde5ad"
    android:text="No" />

<View
    android:layout_width="1dp"
    android:layout_height="match_parent"
    android:layout_marginTop="14dp"
    android:layout_marginBottom="14dp"
    android:background="#000" />

<Button
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="#dde5ad"
    android:text="No" />