Android自定义RadioButton按钮未显示问题求助
通过自定义Selector实现RadioButton选中/未选中状态时,按钮位置无内容显示,相关代码及问题如下:
布局代码
<RadioGroup android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="@+id/imageView10" app:layout_constraintTop_toBottomOf="@+id/titleTextView" android:layout_margin="15dp"> <RadioButton style="@style/TitleTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="email" android:textSize="22sp" android:textIsSelectable="true" android:button="@drawable/radio_button_selectable"/> <RadioButton style="@style/TitleTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="anonymous" android:textSize="22sp" android:textIsSelectable="true" android:checked="true" android:button="@drawable/radio_button_selectable"/> </RadioGroup>
选择器文件 radio_button_selectable.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:drawable="@drawable/radio_button_selected"/> <item android:state_checked="false" android:drawable="@drawable/radio_button_unselected"/> </selector>
选中状态shape文件 radio_button_selected.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <gradient android:endColor="#FFF95B" android:startColor="#FF930F" /> <stroke android:width="2dp" android:color="@color/white" /> </shape>
未选中状态shape文件 radio_button_unselected.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="@android:color/darker_gray" /> <stroke android:width="2dp" android:color="@color/white" /> </shape>
问题原因及解决方法
核心原因
自定义的shape没有设置固定宽高,RadioButton引用的drawable因无尺寸导致无法显示;同时冗余属性和样式也可能干扰显示效果。
具体修复步骤
给shape添加固定尺寸
在radio_button_selected.xml和radio_button_unselected.xml中添加<size>属性,设置按钮的宽高,示例如下:<!-- radio_button_selected.xml 修改后 --> <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <gradient android:endColor="#FFF95B" android:startColor="#FF930F" /> <stroke android:width="2dp" android:color="@color/white" /> <size android:width="24dp" android:height="24dp"/> </shape>移除冗余属性
去掉RadioButton的android:textIsSelectable="true"属性,该属性对RadioButton无意义,还可能引发不必要的冲突。检查样式影响
确认@style/TitleTextView中没有设置android:button="@null"或其他隐藏按钮的属性,如果有需移除或调整。
修改后效果
完成上述调整后,RadioButton的自定义选中/未选中按钮即可正常显示。
内容的提问来源于stack exchange,提问作者Alyona
相关产品推荐
相关产品推荐

