如何在一行中对齐 3 个按钮,android?

Posted

技术标签:

【中文标题】如何在一行中对齐 3 个按钮,android?【英文标题】:How to Align 3 buttons in a line, android? 【发布时间】:2014-01-02 02:08:07 【问题描述】:

我在父级中有线性垂直布局。 然后是底部的水平线性布局,包括 3 个按钮

我想要底部活动最左侧的第一个按钮 中间的第二个按钮 和最右侧的第三个按钮

这里是xml

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="vertical" >

   <ImageView
    android:id="@+id/viewImageView"
    android:layout_
    android:layout_
    android:layout_weight="1"
    android:contentDescription="@null"
    android:src="@drawable/ic_launcher" />

<LinearLayout
    android:layout_
    android:layout_
    android:layout_gravity="bottom" >

    <Button
        android:id="@+id/button1"
        android:layout_
        android:layout_
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_
        android:layout_
        android:text="Button" />

    <Button
        android:id="@+id/button3"
        android:layout_
        android:layout_
        android:gravity="right"
        android:layout_gravity="fill_vertical"
        android:text="Button" />
</LinearLayout>

【问题讨论】:

【参考方案1】:

你也可以用约束布局来做到这一点

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_>

<Button
    android:id="@+id/button"
    android:layout_
    android:layout_
    android:text="Button"
    app:layout_constraintEnd_toStartOf="@+id/button2"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toEndOf="@+id/button3"
    app:layout_constraintTop_toTopOf="@+id/button3" />

<Button
    android:id="@+id/button2"
    android:layout_
    android:layout_
    android:text="Button"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toEndOf="@+id/button"
    app:layout_constraintTop_toTopOf="@+id/button" />

<Button
    android:id="@+id/button3"
    android:layout_
    android:layout_
    android:layout_marginTop="102dp"
    android:text="Button"
    app:layout_constraintEnd_toStartOf="@+id/button"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>

ss:-

【讨论】:

【参考方案2】:

是的,您可以通过申请layout_weight=1

<?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_
    android:layout_ >
    <LinearLayout
        android:layout_
        android:layout_
        android:orientation="horizontal"
        android:layout_alignParentBottom="true">
        <Button
            android:id="@+id/button1"
            android:layout_
            android:layout_
            android:layout_weight="1"
            android:text="left " />
        <Button
            android:id="@+id/button1"
            android:layout_
            android:layout_
            android:layout_weight="1"
            android:text="Center" />
        <Button
            android:id="@+id/button1"
            android:layout_
            android:layout_
            android:layout_weight="1"
            android:text="Right" />
    </LinearLayout>
</RelativeLayout>

【讨论】:

【参考方案3】:

设置方向有水平

    <LinearLayout
    android:layout_
    android:layout_
    android:orientation="horizontal"
     >

    <Button
        android:id="@+id/button1"
        android:layout_weight="1"
        android:layout_
        android:layout_
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_weight="1"
        android:layout_
        android:layout_
        android:text="Button" />

    <Button
        android:id="@+id/button3"
        android:layout_weight="1"
        android:layout_
        android:layout_
        android:gravity="right"
        android:layout_gravity="fill_vertical"
        android:text="Button" />
</LinearLayout>

并为按钮使用权重

捕捉

【讨论】:

【参考方案4】:

对于那些类型的对齐方式(一个按钮在父布局的最左边,另一个在中间,另一个在父布局的最右边)RelativeLayout 将比LinearLayout 更方便。因为,如果你使用@987654323 @ 作为您的按钮的父布局,您可以使用 android:layout_alignParentLeft="true" 作为一个 button,您希望在 left 中对齐,android:layout_centerInParent="true"center 中对齐和android:layout_alignParentRight="true"侧角对齐按钮。

试试这个..

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="vertical" >

   <ImageView
    android:id="@+id/viewImageView"
    android:layout_
    android:layout_
    android:layout_weight="1"
    android:contentDescription="@null"
    android:src="@drawable/ic_launcher" />

<RelativeLayout
    android:layout_
    android:layout_
    android:layout_gravity="bottom" >

    <Button
        android:id="@+id/button1"
        android:layout_
        android:layout_
        android:layout_alignParentLeft="true"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_
        android:layout_
        android:layout_centerInParent="true"
        android:text="Button" />

    <Button
        android:id="@+id/button3"
        android:layout_
        android:layout_
        android:layout_alignParentRight="true"
        android:text="Button" />
</RelativeLayout>

</LinearLayout>

【讨论】:

@Wishy 如果我的回答对您有所帮助,请接受。并通过我的编辑获得更多解释。

以上是关于如何在一行中对齐 3 个按钮,android?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android的RowTable中对齐文本和按钮

如何将 G+ 按钮和 facebook like 按钮对齐在同一行?

Android Studio 3.62 - 在 xml 文件中对齐视图

如何连续对齐 2 个图像视图?

Android:如何对齐底部的按钮和上方的列表视图?

bootstrap codeigniter 表单输入和提交按钮