Фоновая форма кнопки Android

Я хочу создать переключатель, который выглядит следующим образом:

введите описание изображения здесь

То есть, когда выбрано, появляется галочка, указывающая, что она выбрана вместо точки. Если этот параметр не выбран, отображается только оранжевый фон (или другой цвет).

Черный фон страницы - это просто фон приложения.

Я знаю, что я мог бы создать различные рисованные элементы для разных состояний для каждой кнопки, но это не очень расширяемо, если много цветов.

Я думал, что я мог бы добавить изображение галочки в качестве рисования для android:button приписывать и поставлять разные цвета для android:background для радио кнопок. Но это не работает, потому что форма фона всегда квадратная. В итоге у меня была квадратная кнопка.

Как лучше всего реализовать такую ​​кнопку? Или, как мне изменить форму фона на круглую / овальную вместо квадратной?

Вот что у меня сейчас:

<!-- layout.xml -->
<RadioButton
    android:id="@+id/radio1"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:background="@color/orange"
    android:button="@drawable/radio"/>

<!-- drawable/radio.xml -->
<item 
    android:state_checked="true" 
    android:drawable="@drawable/checkmark_on_oval"
    >
</item>    

2 ответа

Попробуйте это может быть полезным для вас. поставить свойства radio_button как

    <RadioButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:button="@null"
        android:checked="true"
        android:drawableLeft="@drawable/radio_button_selector"
        android:drawablePadding="5dp"
        android:paddingLeft="2dp" />

В папку drawable положить rb_drawable.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/radio_button_unchecked" android:state_checkable="true"/> <!-- pressed -->
    <item android:drawable="@drawable/radio_button_checked" android:state_checked="true"/> <!-- focused -->
    <item android:drawable="@drawable/radio_button_unchecked"/> <!-- default -->

</selector>

Здесь radio_button_unchecked и radio_button_checked - это два изображения для ваших радиокнопок.

Вы можете создать круглую форму, используя следующий код

<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="oval">
         <solid android:color="#9F2200"/>
         <stroke android:width="2sp" android:color="#fff" />
     </shape>

Попробуйте это..

Другие вопросы по тегам