Androidラジオボタングループのラジオボタンアイコンを変更できますか


95

私のAndroidアプリケーションのユーザーがいくつかのパラメーターを設定できるようにしたいと思っています。ラジオボタンはこのような状況に最適です。ただし、ラジオボタンが表示されたくない。

ラジオボタンのアイコンを変更することはできますか?たとえば、各行のカスタムレイアウトを作成し、そのレイアウトで自分のアイコンを参照してフォントなどを変更することができます。

回答:


167

はい、可能です。res/ values / styles.xmlで、ラジオボタンの独自のスタイルを定義する必要があります。

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomTheme" parent="android:Theme">
   <item name="android:radioButtonStyle">@style/RadioButton</item>
</style>
<style name="RadioButton" parent="@android:style/Widget.CompoundButton.RadioButton">
   <item name="android:button">@drawable/radio</item>
</style>
</resources>

ここでの「radio」は、ステートフルなドローアブル、radio.xmlである必要があります。

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:state_window_focused="false"
        android:drawable="@drawable/radio_hover" />
    <item android:state_checked="false" android:state_window_focused="false"
        android:drawable="@drawable/radio_normal" />
    <item android:state_checked="true" android:state_pressed="true"
        android:drawable="@drawable/radio_active" />
    <item android:state_checked="false" android:state_pressed="true"
        android:drawable="@drawable/radio_active" />
    <item android:state_checked="true" android:state_focused="true"
        android:drawable="@drawable/radio_hover" />
    <item android:state_checked="false" android:state_focused="true"
        android:drawable="@drawable/radio_normal_off" />
    <item android:state_checked="false" android:drawable="@drawable/radio_normal" />
    <item android:state_checked="true" android:drawable="@drawable/radio_hover" />
    </selector>

次に、カスタムテーマをアプリ全体または選択したアクティビティに適用します。

テーマとスタイルの詳細については、http://brainflush.wordpress.com/2009/03/15/understanding-android-themes-and-styles/を参照してください。


13
別のカスタムスタイルを定義するのではなく、ラジオボタン自体にandroid:buttonプロパティを設定することもできます。
ヨニサムラン2010

7
正しいですが、通常は複数のラジオボタンがあるため、これはあまり良い習慣ではありません。
Konstantin Burov 2010

@KonstantinBurov 9パッチイメージを使用している場合はどうなりますか?
Hades

@KonstantinBurovプログラムでボタンを追加しているのでない限り、その場合はすばらしいです:)
Cornholio 2013

1
サポートテーマの場合、<style name = "CustomTheme" parent = "android:Theme"> <item name = "android:radioButtonStyle"> @ style / RadioButton </ item> <item name = "radioButtonStyle"> @ styleを使用することをお勧めします/ RadioButton </ item> </ style>
Dhruv Mevada

30

通常のボタンのようにカスタムボタンをラジオボタンに配置できます。そのため、ドローアブルフォルダーに1つのXMLファイルを作成します。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/sub_screens_aus_hl" 
    android:state_pressed="true"/>  
<item android:drawable="@drawable/sub_screens_aus" 
    android:state_checked="true"/>  
<item android:drawable="@drawable/sub_screens_aus" 
    android:state_focused="true" />
<item android:drawable="@drawable/sub_screens_aus_dis" />  
</selector> 

ここでは、ラジオボタンに3つの異なる画像を使用できます

このファイルを次のようにRadioButtonに使用します。

android:button="@drawable/aus"
android:layout_height="120dp"
android:layout_width="wrap_content" 

13

ラジオボタンのみを変更する簡単な方法は、セレクターをドローアブルの右に設定するだけです。

<RadioButton
    ...
    android:button="@null"
    android:checked="false"
    android:drawableRight="@drawable/radio_button_selector" />

そしてセレクタは:

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

それで全部です


1
最善の解決策、私の場合、「drawableRight」を「ボタン」に変更し、セレクターxmlにいくつかのパディングを追加しました
F-1

これが最善の解決策です。私はこの方法を使用しましたが、正常に機能します。しかし、andoidxに移行した後、android:button = "@ null"が機能せず、すべてのアイテムに2つのラジオボタンアイコンが表示されます。。
maniaq


0

これはおそらく簡単なアプローチです。

ここに画像の説明を入力してください

上記の2つのアイコンを使用すると、RadioGroup次のようなものになります

ここに画像の説明を入力してください

  • RadioGroupの向きを水平に変更します
  • それぞれRadioButtonのプロパティについて、のButtonCompoundButtonにアイコンを付けてみてください、
  • パディングとサイズを調整し、
  • チェックすると、Background属性が設定されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.