我有一个带有标签和放射组的相对位置,我希望标签的基线和放射组的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>

相反,我得到的是射线组的顶部与标签的基线对齐,如下所示:
android - RelativeLayout中的基线对齐不适用于RadioGroup-LMLPHP
我怎样才能得到我想要的行为?我绝对不想要任何硬编码的边距,或中心对齐,我想对齐基线。
似乎view.getBaseline应该报告基线相对于视图顶部的位置,如果该方法为radiogroup返回0,则可以解释我看到的行为。实际上,radiogroup及其基类linearlayout似乎都没有定义该方法。但也许,我忽略了一些事情。

最佳答案

我也面临同样的问题。结果,您只需要添加两个属性。考虑第一个版本。它不起作用:

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

结果与问题中的截图非常相似。
android - RelativeLayout中的基线对齐不适用于RadioGroup-LMLPHP
现在,请把下面几行…
    android:baselineAlignedChildIndex="0"
    android:baselineAligned="true"

…在<RadioGroup />标签内。
现在,它将如下所示:
android - RelativeLayout中的基线对齐不适用于RadioGroup-LMLPHP
基线整齐对齐…

关于android - RelativeLayout中的基线对齐不适用于RadioGroup,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33917509/

10-11 17:20