我想创建一个自定义RadioButton或RadioGroup,如下所示:image
我希望选中的单选按钮内有一个复选标记。
以下是我尝试过的:
RadioGroup xml:
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="15dp">
<RadioButton
android:id="@+id/radioButton1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="start|center_vertical"
android:text="Radio 1"
android:button="@null"
android:background="@drawable/radio_button_selector" />
<RadioButton
android:id="@+id/radioButton2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="Radio 2"
android:button="@null"
android:background="@drawable/radio_button_selector" />
<RadioButton
android:id="@+id/radioButton3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end|center_vertical"
android:text="Radio 3"
android:button="@null"
android:background="@drawable/radio_button_selector" />
</RadioGroup>
radio_button_selector.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
<layer-list>
<item>
<shape android:shape="oval">
<solid android:color="@color/colorRadioButtonSelected"/>
<size android:width="20dp" android:height="20dp"/>
</shape>
</item>
<item android:drawable="@drawable/checked_icon" />
</layer-list>
</item>
<item android:state_checked="false">
<shape android:shape="oval">
<solid android:color="@color/colorRadioButtonUnselected"/>
<size android:width="20dp" android:height="20dp"/>
</shape>
</item>
</selector>
结果如下:
result
我如何才能实现我想要的无线电组?
1条答案
按热度按时间hi3rlvi21#
试试这个:
首先,在
res/drawable
文件夹中为每个状态(例如选中、未选中或禁用)创建不同的形状:把它们和选择器分开会让你的代码更简洁。
现在,像这样创建选择器:
请注意,我添加了一个按钮禁用时的项目,这可能很重要。但如果不是,只需删除它。
然后,在布局上像这样使用选择器: