首页 > 解决方案 > 如何在 Android 中舍入 RadioButton?

问题描述

我正在设计RadioButtons。现在它看起来像

这个

我有问题:

我想以圆圈形式展示我将如何执行此操作?

我希望它的宽度和高度看起来相同,现在它在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>

标签: androidradio-button

解决方案


尝试更改android:shape="rectangle"android:shape="oval"


推荐阅读