如何正确对齐水平 LinearLayout Dialogfragment 中的按钮

How to properly align buttons in horizontal LinearLayout Dialogfragment

我正在使用一个简单的线性布局,我在 Dialog 片段中调用 onCreateView() 时将其放大。布局示例如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|center_horizontal"
    android:layout_margin="@dimen/activity_horizontal_margin"
    android:orientation="horizontal">

    <Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:text="Butt1"
        android:textAppearance="?android:textAppearanceMedium" />

    <View
        android:layout_width="@dimen/fragment_rating_horizontal_button_spacer"
        android:layout_height="match_parent" />

    <Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:text="Butt2"
        android:textAppearance="?android:textAppearanceLarge" />

    <View
        android:layout_width="@dimen/fragment_rating_horizontal_button_spacer"
        android:layout_height="match_parent" />

    <Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:text="Butt3"
        android:textAppearance="?android:textAppearanceLarge" />

</LinearLayout>

问题是此布局中的第一个按钮与其他两个按钮没有正确对齐。我确定这是由于第一个按钮上的文本大小为中等所致。

我想在第一个按钮中显示更长的字符串,方法是使用较小的文本并保持 3 个按钮相同。

如何修复对齐?

编辑。添加了额外的屏幕截图以显示夸大的问题:

也许你可以尝试这样的事情

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/activity_horizontal_margin">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:orientation="horizontal"
        android:layout_gravity="bottom|center_horizontal">

        <Button
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:text="Butt1"
            android:textAppearance="?android:textAppearanceMedium" />

        <View
            android:layout_width="@dimen/fragment_rating_horizontal_button_spacer"
            android:layout_height="match_parent" />

        <Button
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:text="Butt2"
            android:textAppearance="?android:textAppearanceLarge" />

        <View
            android:layout_width="@dimen/fragment_rating_horizontal_button_spacer"
            android:layout_height="match_parent" />

        <Button
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:text="Butt3"
            android:textAppearance="?android:textAppearanceLarge" />
    </LinearLayout>
</RelativeLayout>

像这样尝试:

它按照您的要求工作。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_gravity="top"
              android:layout_margin="@dimen/activity_horizontal_margin"
              android:orientation="horizontal">

    <Button
        android:layout_width="fill_parent"
        android:layout_height="100dp"
        android:layout_margin="3dp"
        android:layout_weight="1"
        android:text="Button1"
        android:layout_gravity="center"
        android:textSize="10dp" />

    <View
        android:layout_width="0dp"
        android:layout_height="match_parent"
     />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="100dp"
        android:layout_margin="3dp"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:text="Button2"
        android:textSize="20dp" />
    <View
        android:layout_width="0dp"
        android:layout_height="match_parent" />
    <Button
        android:layout_width="fill_parent"
        android:layout_height="100dp"
        android:layout_margin="3dp"
        android:layout_weight="1"
        android:layout_gravity="center"
        android:text="Button3"
        android:textSize="20dp"
        />
</LinearLayout>

对于您的最新要求(即,如果您更改文本大小,按钮对齐方式也未更改),只需使用

    android:layout_gravity="center" 

在每个按钮中。

输出:-

为第一个小文本大小的按钮提供权重并使用 layout_gravity

<?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="wrap_content"
    android:layout_gravity="bottom"
    android:orientation="horizontal" >

    <Button
        android:layout_width="0dp"
        android:layout_height="100dp"
        android:layout_weight=".1"
        android:text="This is a very good day "
        android:layout_gravity="center"
        android:textAppearance="?android:textAppearanceMedium" />

    <Button
        android:layout_width="0dp"
        android:layout_height="100dp"
        android:text="Butt2"
        android:layout_weight=".1"
        android:textAppearance="?android:textAppearanceLarge" />

    <Button
        android:layout_width="0dp"
        android:layout_height="100dp"
        android:text="Butt3"
        android:layout_weight=".1"
        android:textAppearance="?android:textAppearanceLarge" />

</LinearLayout>