Android 自定义单选按钮

job*_*bin 0 android radio-button

我想制作自定义单选按钮。我为正常(radio_normal)状态创建了一个drawable。但我发现很难为选中状态(radio_pressed)创建一个形状。我尝试过创建我想要的方式。但没有成功好吧。我不知道我是否做对了。对于检查状态,形状应该是这样的。外边框和内圈必须是白色的。有人可以帮我吗?

radio_normal:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring"
    android:useLevel="false">
    <solid
        android:color="#2196f3"></solid>

</shape>
Run Code Online (Sandbox Code Playgroud)

radio_pressed:

 <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
    <shape android:shape="oval"
        xmlns:android="http://schemas.android.com/apk/res/android">
        <solid
            android:color="@android:color/transparent">
        </solid>
        <size
             android:height="60dp"
            android:width="60dp">
       </size>
      <stroke
          android:color="#ffffff"
          android:width="1dp"
          >
    </stroke>
    </shape>
        </item>
        <item>
            <shape android:shape="oval">
                <solid
                    android:color="#ffffff">
                </solid>
            </shape>
            <size
                android:height="30dp"
                android:width="30dp">
    </size>
        </item>
    </layer-list>
Run Code Online (Sandbox Code Playgroud)

radio_bg:

<?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_pressed"
    >
</item>
    <item
        android:state_checked="false"
        android:drawable="@drawable/radio_normal"
        >
    </item>
</selector>
Run Code Online (Sandbox Code Playgroud)

活动_主要:

<RadioButton
        android:id="@+id/radio"
        android:layout_centerInParent="true"
        android:layout_width="10dp"
        android:button="@drawable/radio_bg"
        android:layout_marginTop="100dp"
        android:layout_height="10dp"
        />
Run Code Online (Sandbox Code Playgroud)

小智 6

这与我所能得到的差不多,希望它对你有用,并且有帮助:)

radio_normal:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring"
    android:useLevel="false">
    <solid android:color="#2196f3" />
    <size
        android:width="25dp"
        android:height="25dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)

radio_pressed:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:padding="3dp">
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="ring"
            android:useLevel="false">
            <solid android:color="@android:color/white" />
            <size
                android:width="25dp"
                android:height="25dp" />
        </shape>
    </item>
    <item
        android:bottom="7dp"
        android:left="7dp"
        android:right="7dp"
        android:top="7dp">
        <shape
            android:shape="oval"
            android:useLevel="false">

            <solid android:color="@android:color/white" />
        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

radio_bg:

<?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_pressed"
        >
    </item>
    <item
        android:state_checked="false"
        android:drawable="@drawable/radio_normal"
        >
    </item>
</selector>
Run Code Online (Sandbox Code Playgroud)

活动_主要:

<RadioButton
    android:id="@+id/radio"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="100dp"
    android:button="@drawable/radio_bg"/>
Run Code Online (Sandbox Code Playgroud)

让我知道这是否对你有用:)