1. ホーム
  2. android

[解決済み] アンドロイドでカスタムラジオボタンを追加する

2022-04-29 02:39:32

質問

アンドロイドの通常のボタンにラジオボタンの効果を得ようとしています。

私は以下のようなシンプルなアンドロイドのラジオボタンを持っています。

このためのコードは ::

アクティビティ_メイン.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" >

        <RadioButton
            android:id="@+id/radio0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="RadioButton1" />

        <RadioButton
            android:id="@+id/radio1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="RadioButton2" />

        <RadioButton
            android:id="@+id/radio2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="RadioButton3" />
    </RadioGroup>


</RelativeLayout>


カスタマイズの方法は以下の通りです。

ありがとうございます。 !

[EDIT] 回答にあるコードを使用した場合

しかし、ボタン名が選択オプションの影に隠れてしまうのですが、どうすれば削除できますか?


{EDIT}さらなる変更点

最終的な変更は、少なくとも私は3つのラジオボタンのうち、選択したボタンを知っている必要があります...それは次のように取得することは可能ですか?

解決方法は?

画像やセレクタを参照する背景のdrawableを追加し、ボタンを透明にする(以下同様)。

<RadioButton
    android:id="@+id/radio0"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@null"
    android:button="@drawable/yourbuttonbackground"
    android:checked="true"
    android:text="RadioButton1" />

ラジオボタンがチェックされたときに異なるリソースを持つようにしたい場合は、セレクタの背景を描画可能なものを作成します。

res/drawable/yourbuttonbackground.xml

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

上のセレクタでは、2つのdrawableを参照しています。 ab を作成する方法を説明します。

res/drawable/a.xml -。 選択された状態

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <corners
        android:radius="5dp" />
    <solid
        android:color="#fff" />
    <stroke
        android:width="2dp"
        android:color="#53aade" />
</shape>

res/drawable/b.xml - 通常の状態

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

drawableの詳細はこちら。 http://developer.android.com/guide/topics/resources/drawable-resource.html