RelativeLayout中的基线对齐对RadioGroup不起作用

时间:2015-11-25 13:16:44

标签: android

我有一个带有标签和RadioGroup的RelativeLayout,我希望标签的基线和RadioGroup的RadioButton子节点对齐。我的代码是:

<TextView android:id="@+id/hi"
    android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:text="Hi"
    android:textAppearance="@style/TextAppearance.AppCompat.Display2"
    />

<RadioGroup
    android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:layout_toRightOf="@id/hi"
    android:layout_alignBaseline="@id/hi">
    <RadioButton
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:text="There"/>
</RadioGroup>

相反,我得到的是RadioGroup的顶部与标签的基线对齐,如下所示:

enter image description here

我如何得到我想要的行为?我绝对不想要任何硬编码边距或中心对齐,我想对齐基线。

View.getBaseline似乎应该报告相对于视图顶部的基线位置,如果该方法为RadioGroup返回0,则可以解释我看到的行为。事实上,RadioGroup及其基类LinearLayout似乎都没有定义该方法。但也许,我忽略了一些事情。

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。事实证明,您只需要添加两个属性。考虑第一个版本。它不起作用:

<?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:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.thomaskuenneth.temperatureconverter.MainActivity">

    <EditText
        android:id="@+id/input"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:ems="5"
        android:inputType="numberDecimal"
        android:text="42.0" />

    <RadioGroup
        android:id="@+id/tempSrc"
        android:layout_alignBaseline="@id/input"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_toEndOf="@id/input"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/srcCelsius"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="°C" />

        <RadioButton
            android:id="@+id/srcFahrenheit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="°F" />

        <RadioButton
            android:id="@+id/srcKelvin"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="K" />

    </RadioGroup>

</RelativeLayout>

结果非常类似于问题中的屏幕截图。

RadioButtons are not baseline-aligned

现在,请填写以下内容......

    android:baselineAlignedChildIndex="0"
    android:baselineAligned="true"

...在<RadioGroup />标记内。

现在,它看起来像这样:

enter image description here

整齐地基线对齐...