我正在尝试在一个
是否存在不同的设置来使勾选标记按预期行为?
以下是当前代码:
使用以下代码
RadioButton
中创建一个勾选标志,如果未选择该按钮,则该标志会消失。但是,如果我将自定义的勾选标记放在 RadioButton
的 android:button
属性中,它似乎只对 state_checked
作出反应,这是出乎意料的。因为如果我用 android:drawableRight="?android:attr/listChoiceIndicatorSingle"
替换自定义的勾选标记,则这个方法就非常完美正常工作了。包含在 drawableRight
中的勾选标记是我首选的,因为在 android:button
属性上设置间距是有问题的。是否存在不同的设置来使勾选标记按预期行为?
以下是当前代码:
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:button="@null"
android:drawableRight="@drawable/period_selector"
android:background="?android:selectableItemBackground"
android:layoutDirection="rtl"
android:layout_gravity="start"
android:textAlignment="textStart"
android:paddingVertical="16dp"
android:paddingHorizontal="16dp"
android:text="@string/period_selection_month"
android:textSize="16sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?divider" />
<RadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:button="@null"
android:drawableRight="@drawable/period_selector"
android:background="?android:selectableItemBackground"
android:layoutDirection="rtl"
android:layout_gravity="start"
android:textAlignment="textStart"
android:paddingVertical="16dp"
android:paddingHorizontal="16dp"
android:text="@string/period_selection_year"
android:textSize="16sp" />
</RadioGroup>
使用以下代码
drawable/period_selector.xml
:<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_check" android:state_checked="true" />
</selector>
总结如下:
- 无论按钮是否选中,使用
drawableRight
中的自定义打勾标志都不会呈现。 - 在
drawableRight
中使用标准的listChoiceIndicatorSingle
可以正确响应按钮是否被选中。 - 在
button
中使用自定义打勾标志可以显示预期的选择行为(出现和消失),但不会监听间距。