Как округлить RadioButton в andriod?

#android #radio-button

#Android #переключатель

Вопрос:

Я разрабатываю радиокнопки. Прямо сейчас это выглядит так

это

У меня есть вопросы:

Я хочу показать это в круге, как я буду выполнять это действие?

Я хочу, чтобы он выглядел одинаково по ширине и высоте, прямо сейчас он wrap_content включен.

Вот мой код

  <RadioGroup
        android:id="@ id/llButtons"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <androidx.appcompat.widget.AppCompatRadioButton
            android:id="@ id/btnEigene"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:background="@drawable/radio_flat_selector"
            android:button="@android:color/transparent"
            android:checked="true"
            android:drawableTop="@drawable/ic_account"
            android:drawablePadding="5dp"
            android:gravity="center"
            android:paddingStart="16dp"
            android:paddingTop="5dp"
            android:paddingEnd="16dp"
            android:paddingBottom="5dp"
            android:text="@string/Eigene"
            android:textColor="@color/radio_flat_text_selector" />

        <androidx.appcompat.widget.AppCompatRadioButton
            android:id="@ id/btnKontakte"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:background="@drawable/radio_flat_selector"
            android:button="@android:color/transparent"
            android:drawableTop="@drawable/ic_contacts"
            android:drawablePadding="5dp"
            android:gravity="center"
            android:paddingStart="16dp"
            android:paddingTop="5dp"
            android:paddingEnd="16dp"
            android:paddingBottom="5dp"
            android:text="@string/Kontakte"
            android:textColor="@color/radio_flat_text_selector" />

        <androidx.appcompat.widget.AppCompatRadioButton
            android:id="@ id/btnAlle"
            android:layout_width="70dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:background="@drawable/radio_flat_selector"
            android:button="@android:color/transparent"
            android:drawableTop="@drawable/ic_all"
            android:drawablePadding="5dp"
            android:gravity="center"
            android:paddingStart="16dp"
            android:paddingTop="5dp"
            android:paddingEnd="16dp"
            android:paddingBottom="5dp"
            android:text="@string/Alle"
            android:textColor="@color/radio_flat_text_selector" />

        <androidx.appcompat.widget.AppCompatRadioButton
            android:id="@ id/btnGeloescht"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginVertical="4dp"
            android:layout_marginLeft="6dp"
            android:layout_marginTop="0dp"
            android:layout_marginRight="6dp"
            android:button="@android:color/transparent"
            android:contentDescription="@string/deletedquestions"
            android:drawableTop="@drawable/selectorbtnquestions"
            android:drawablePadding="-1dp"
            android:gravity="center"
            android:paddingTop="0dp"
            android:scaleX="1.0"
            android:scaleY="1.0"
            android:text="@string/Gel"
            android:textSize="10sp"
            android:visibility="gone" />

        <androidx.appcompat.widget.AppCompatRadioButton
            android:id="@ id/btnArchiviert"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:background="@drawable/radio_flat_selector"
            android:button="@android:color/transparent"
            android:drawableTop="@drawable/ic_archive"
            android:drawablePadding="5dp"
            android:gravity="center"
            android:paddingStart="16dp"
            android:paddingTop="5dp"
            android:paddingEnd="16dp"
            android:paddingBottom="5dp"
            android:text="@string/Archiviert"
            android:textColor="@color/radio_flat_text_selector" />

        <androidx.appcompat.widget.AppCompatRadioButton
            android:id="@ id/btnAus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:background="@drawable/radio_flat_selector"
            android:button="@android:color/transparent"
            android:drawableTop="@drawable/ic_hidden"
            android:drawablePadding="5dp"
            android:gravity="center"
            android:paddingStart="16dp"
            android:paddingTop="5dp"
            android:paddingEnd="16dp"
            android:paddingBottom="5dp"
            android:text="@string/Ausgebl"
            android:textColor="@color/radio_flat_text_selector" />

    </RadioGroup>
 

radio_flat_selector.xml для выбора фона:

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/radio_flat_selected" android:state_checked="true" />
    <item android:drawable="@drawable/radio_flat_regular" />
</selector>
 

radio_flat_selected.xml для выбранной кнопки:

 <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="1dp" />
<solid android:color="@color/colorAccent" />
<stroke
    android:width="1dp"
    android:color="@color/colorAccent" />
</shape>
 

radio_flat_regular.xml для обычного селектора:

 <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="1dp" />
<solid android:color="#fff" />
<stroke
    android:width="1dp"
    android:color="@color/colorAccent" />
</shape>
 

Весь приведенный выше код файла 3 будет находиться в drawable/ папке.

Теперь нам также нужен Text селектор цвета, чтобы соответствующим образом изменить цвет текста.

radio_flat_text_selector.xml для выбора цвета текста

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/colorAccent" android:state_checked="false" />
<item android:color="@color/text_n" android:state_checked="true" />
</selector>
 

Ответ №1:

Попробуйте изменить android:shape="rectangle" на android:shape="oval"

Ответ №2:

Я решил эту проблему, поэтому решил опубликовать ответ, чтобы в будущем никому не пришлось сталкиваться с такой проблемой.

Вот решение для округления RadioButton .

 <RadioGroup
        android:id="@ id/llButtons"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <androidx.appcompat.widget.AppCompatRadioButton
            android:id="@ id/btnEigene"
            android:layout_width="58dp"
            android:layout_height="58dp"
            android:layout_marginStart="4dp"
            android:background="@drawable/radio_flat_selector"
            android:button="@android:color/transparent"
            android:contentDescription="@string/EigeneFragen"
            android:drawableTop="@drawable/ic_mine"
            android:drawablePadding="-1dp"
            android:gravity="center"
            android:padding="10dp"
            android:text="@string/Eigene"
            android:textSize="11sp" />

        <androidx.appcompat.widget.AppCompatRadioButton
            android:id="@ id/btnKontakte"
            android:layout_width="58dp"
            android:layout_height="58dp"
            android:layout_marginStart="4dp"
            android:background="@drawable/radio_flat_selector"
            android:button="@android:color/transparent"
            android:contentDescription="@string/FragenKontakte"
            android:drawableTop="@drawable/ic_contacts"
            android:drawablePadding="-1dp"
            android:gravity="center"
            android:padding="10dp"
            android:text="@string/Kontakte"
            android:textSize="11sp" />

        <androidx.appcompat.widget.AppCompatRadioButton
            android:id="@ id/btnAlle"
            android:layout_width="58dp"
            android:layout_height="58dp"
            android:layout_marginStart="4dp"
            android:background="@drawable/radio_flat_selector"
            android:button="@android:color/transparent"
            android:contentDescription="@string/Alle"
            android:drawableTop="@drawable/ic_all"
            android:drawablePadding="-1dp"
            android:gravity="center"
            android:padding="10dp"
            android:text="@string/Alle"
            android:textSize="11sp"
            android:visibility="visible" />

        <androidx.appcompat.widget.AppCompatRadioButton
            android:id="@ id/btnGeloescht"
            android:layout_width="58dp"
            android:layout_height="58dp"
            android:layout_marginStart="4dp"
            android:background="@drawable/radio_flat_selector"
            android:button="@android:color/transparent"
            android:contentDescription="@string/deletedquestions"
            android:drawableTop="@drawable/ic_delete"
            android:drawablePadding="-1dp"
            android:gravity="center"
            android:padding="10dp"
            android:text="@string/Gel"
            android:textSize="12sp"
            android:visibility="gone" />

        <androidx.appcompat.widget.AppCompatRadioButton
            android:id="@ id/btnArchiviert"
            android:layout_width="58dp"
            android:layout_height="58dp"
            android:layout_marginStart="4dp"
            android:background="@drawable/radio_flat_selector"
            android:button="@android:color/transparent"
            android:contentDescription="@string/Archiv"
            android:drawableTop="@drawable/ic_archive"
            android:drawablePadding="-1dp"
            android:gravity="center"
            android:padding="10dp"
            android:text="@string/Archiviert"
            android:textSize="11sp" />

        <androidx.appcompat.widget.AppCompatRadioButton
            android:id="@ id/btnAus"
            android:layout_width="58dp"
            android:layout_height="58dp"
            android:layout_marginStart="4dp"
            android:background="@drawable/radio_flat_selector"
            android:button="@android:color/transparent"
            android:contentDescription="@string/ausgeblendetefragen"
            android:drawableTop="@drawable/ic_hidden"
            android:drawablePadding="-1dp"
            android:gravity="center"
            android:padding="10dp"
            android:text="@string/Ausgebl"
            android:textSize="11sp" />
    </RadioGroup>
 

radio_flat_selector.xml для выбора фона:

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/radio_flat_selected" android:state_checked="true" />
<item android:drawable="@drawable/radio_flat_regular" />
 

radio_flat_selected.xml для выбранной кнопки:

     <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="@color/lightdivider" />
    <stroke
        android:width="1dp"
        android:color="@color/lightdivider" />

    <size
        android:width="50dp"
        android:height="50dp" />
</shape>
 

radio_flat_regular.xml для обычного селектора:

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

    <solid android:color="#fff" />
    <stroke
        android:width="1dp"
        android:color="@color/lightdivider" />
    <size
        android:width="50dp"
        android:height="50dp" />
</shape>
 

Весь приведенный выше код файла 3 будет находиться в drawable/ папке.

Теперь нам также нужен Text селектор цвета, чтобы соответствующим образом изменить цвет текста.

radio_flat_text_selector.xml для выбора цвета текста

  <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/lightdivider" android:state_checked="false" />
    <item android:color="@color/colorLV" android:state_checked="true" />
</selector>