web-dev-qa-db-fra.com

Est-il possible de changer l’icône du bouton radio dans un groupe de boutons radio Android

Je souhaite autoriser l'utilisateur de mon application =Android) à définir certains paramètres. Le bouton radio est idéal pour cette situation. Cependant, je n'aime pas que les boutons radio soient affichés.

Est-il possible de changer l'icône du bouton radio? Par exemple, est-il possible de créer une mise en page personnalisée pour chaque ligne et dans cette mise en page, faire référence à ma propre icône et modifier la police, etc.

94
yamspog

Oui, c’est possible, vous devez définir votre propre style pour les boutons radio, à 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' devrait ici être un fichier stateful drawable, 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>

Ensuite, appliquez simplement le thème Personnalisé à l’ensemble de l’application ou aux activités de votre choix.

Pour plus d'informations sur les thèmes et les styles, consultez http://brainflush.wordpress.com/2009/03/15/understanding-Android-themes-and-styles/ c'est un bon guide.

165
Konstantin Burov

Vous pouvez mettre une image personnalisée en radiobutton comme un bouton normal. pour cela, créez un fichier XML dans un dossier pouvant être dessiné, par exemple

<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> 

Ici, vous pouvez utiliser 3 images différentes pour radiobutton

et utilisez ce fichier pour RadioButton comme:

Android:button="@drawable/aus"
Android:layout_height="120dp"
Android:layout_width="wrap_content" 
30
Chirag

Le moyen le plus simple de ne changer que le bouton radio est simplement de sélectionner le sélecteur

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

Et le sélecteur est:

<?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>

C'est tout

10
topcbl

oui .... `du XML

Android:button="@drawable/yourdrawable" 

et de Java

myRadioButton.setButtonDrawable(resourceId or Drawable);

`

1
shweta jariya

Voici probablement une approche rapide,

enter image description here

Avec deux icônes montrées ci-dessus, vous aurez un RadioGroup quelque chose comme ceci

enter image description here

  • changer l'orientation du RadioGroup en horizontal
  • pour chaque propriété de RadioButton, essayez de donner l'icône pour Button sous CompoundButton,
  • ajuster le rembourrage et la taille,
  • et définissez l'attribut Background lorsqu'il est coché.
0
kolunar