Android:如何将单选按钮垂直对齐到多行文本的顶部?

4

正如您所看到的,我有一个简单的RadioGroup及其选项。

<RadioGroup
    android:id="@+id/radio_report_problems"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="20dp" >

    <RadioButton
        android:id="@+id/radiooption_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/report_problem_rd_opt_1" />

    <RadioButton
        android:id="@+id/radiooption_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/report_problem_rd_opt_2" />

    .....

</RadioGroup>

我的问题是,圆点在文本的中间,而不是在第一行开始。不使用tableView或linearLayout,只使用RadioGroup,有没有简单的方法可以实现这一点?谢谢。
3个回答

5

3
您可以扩展RadioButton并覆盖onDraw方法以使按钮与文本顶部对齐。绘制该按钮的代码实际上位于CompoundButton内(RadioButton从中继承),因此这应该是您绘制按钮的起点。源码 个人认为将按钮对齐到中心没有问题,但这不是重点。

在HTML中,默认垂直对齐到顶部。我来自客户端,这对我来说似乎更加清晰。 在Android中,列表的位置是否常见呢?感谢您的回答。难道没有比这更简单的方法吗? - neoswf
2
这就是Android的RadioButton(和CompoundButton)的行为方式,我怀疑除了实际的开发人员之外,没有人会知道为什么会这样,或者为什么没有对齐按钮的方法。我经常制作自定义视图,这些视图只是现有视图的轻微修改,不幸的是,我想不到更简单的方法来获得您想要的效果。 - Karakuri
onDraw 方法是 protected 的。这意味着您不能在继承 RadioButton 的类中覆盖它。 - Raquib-ul Alam
@AlamKanak,你可以完全重写 onDraw。(就此而言,当你子类化时,你绝对可以重写超类的任何 protected 方法。) - Karakuri

-2

为单选按钮设置顶部或底部重力

radioButton.setGravity(Gravity.TOP | Gravity.BOTTOM);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接