我有一个带有标签和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的顶部与标签的基线对齐,如下所示:
我如何得到我想要的行为?我绝对不想要任何硬编码边距或中心对齐,我想对齐基线。
View.getBaseline似乎应该报告相对于视图顶部的基线位置,如果该方法为RadioGroup返回0,则可以解释我看到的行为。事实上,RadioGroup及其基类LinearLayout似乎都没有定义该方法。但也许,我忽略了一些事情。
答案 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>
结果非常类似于问题中的屏幕截图。
现在,请填写以下内容......
android:baselineAlignedChildIndex="0"
android:baselineAligned="true"
...在<RadioGroup />
标记内。
现在,它看起来像这样:
整齐地基线对齐...