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

时间:2015-07-01 10:20:26

标签: android android-linearlayout android-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>

问题是此布局中的第一个按钮与其他两个按钮无法正确对齐。我确定这是因为第一个按钮上有中等文字大小。

enter image description here

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

如何修复路线?

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

3 个答案:

答案 0 :(得分:1)

为第一个带有小文本大小的按钮提供重量并使用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>

答案 1 :(得分:0)

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

<?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>

答案 2 :(得分:0)

尝试这样:

根据您的要求工作。

<?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" 

每个按钮。

<强>输出: -

enter image description here