Android:单选按钮文本与数字没有很好地对齐

Android: radiobutton text not well aligned with number

我有一个难以置信的问题。我有 1 个单选组和 2 个单选按钮,我希望每个单选按钮的宽度为 match_parent,文本在左侧对齐。但是不知道为什么,第一个是右对齐的,如图所示

这是代码

<RadioGroup
    android:id="@+id/rgPasswordSendMode"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="24dp"
    android:layout_marginTop="32dp"
    android:layout_marginEnd="24dp"
    android:layout_marginBottom="32dp"
    android:divider="?android:attr/dividerHorizontal"
    android:orientation="vertical"
    android:showDividers="middle|end"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView">
     <RadioButton
        android:id="@+id/phoneRadioButton"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:layout_gravity="start"
        android:layoutDirection="rtl"
        android:textAlignment="textStart"
        android:text="******6043" />
     <RadioButton
        android:id="@+id/emailRadioButton"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:layout_gravity="start"
        android:layoutDirection="rtl"
        android:textAlignment="textStart"
        android:text="test@test.com" />
</RadioGroup>

当我仅将 ******6043 更改为 ****** 或其他文本时,标签在左侧很好地对齐。 在 enter link description here 的基础上,我添加了

android:button="@null"
android:drawableRight="?android:attr/listChoiceIndicatorSingle"
android:background="?android:selectableItemBackground"

但没有任何改变。

为什么会这样,如何解决?

要解决这个问题,您应该添加 android:textDirection="ltr" 来定义文本从左到右的方向。 android:layoutDirection="rtl" 定义布局绘图的方向,以便将单选按钮绘制到文本的右侧。

您的布局应如下所示:

<RadioGroup
    android:id="@+id/rgPasswordSendMode"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="24dp"
    android:layout_marginTop="32dp"
    android:layout_marginEnd="24dp"
    android:layout_marginBottom="32dp"
    android:divider="?android:attr/dividerHorizontal"
    android:orientation="vertical"
    android:showDividers="middle|end"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <RadioButton
        android:id="@+id/phoneRadioButton"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:layoutDirection="rtl"
        android:textDirection="ltr"
        android:text="******6043" />

    <RadioButton
        android:id="@+id/emailRadioButton"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:layoutDirection="rtl"
        android:textDirection="ltr"
        android:text="test@test.com" />
</RadioGroup>

结果: