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>
结果:
我有一个难以置信的问题。我有 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>
结果: