J'essaie d'obtenir un effet de bouton radio pour les boutons normaux dans Android
J'ai un simple bouton radio Android ci-dessous
Le code pour cela est :
activity_main.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>
Comment le personnaliser comme ci-dessous:
Merci !
[MODIFIER] en utilisant le code de l'une des réponses
Mais le nom du bouton est éclipsé par l'option de sélection comment le supprimer?
{EDIT} autres modifications
Les changements finaux devraient au moins savoir quel bouton j'ai sélectionné parmi trois boutons radio .... est-il possible d'obtenir comme ci-dessous?
Réponses:
Ajoutez un arrière-plan dessinable qui fait référence à une image, ou à un sélecteur (comme ci-dessous), et rendez le bouton transparent:
Si vous souhaitez que vos boutons radio aient une ressource différente lorsqu'ils sont cochés, créez un fond de sélecteur dessinable:
res / drawable / yourbuttonbackground.xml
Dans le sélecteur ci-dessus, nous référençons deux drawables,
a
etb
voici comment nous les créons:res / drawable / a.xml - État sélectionné
res / drawable / b.xml - État normal
Plus d'informations sur les drawables ici: http://developer.android.com/guide/topics/resources/drawable-resource.html
la source
android:button="@android:color/transparent"
pour le supprimer.J'ai mis à jour la réponse acceptée et supprimé les éléments inutiles.
J'ai créé XML pour l'image suivante.
Votre code XML pour
RadioButton
sera:radio_flat_selector.xml
pour le sélecteur d'arrière-plan:radio_flat_selected.xml
pour le bouton sélectionné:radio_flat_regular.xml
pour le sélecteur régulier:Tous les 3 codes de fichier ci-dessus seront dans le
drawable/
dossier.Maintenant, nous avons également besoin du
Text
sélecteur de couleurs pour changer la couleur du texte en conséquence.radio_flat_text_selector.xml
pour le sélecteur de couleur de texte(Utilisez le
color/
dossier pour ce fichier.)Remarque: j'ai référencé de nombreuses réponses pour ce type de solution mais je n'ai pas trouvé de bonne solution alors je la fais.
J'espère que cela vous sera utile.
Merci.
la source
Utilisez le même format de fichier XML que celui de la réponse d'Evan, mais un fichier pouvant être dessiné est tout ce dont vous avez besoin pour le formatage.
Et votre fichier dessinable séparé:
la source
Le réglage
android:background
etandroid:button
le RadioButton comme la réponse acceptée ne fonctionnaient pas pour moi. L'image dessinable était affichée en arrière-plan (même si elleandroid:button
était définie sur transparent) dans le texte du bouton radio commedonc a donné radiobutton comme radiobuttonstyle.xml personnalisable
et radiobuttonstyle.xml se présente comme suit
et après ce bouton radio avec un style de bouton personnalisé a fonctionné.
la source
Vous devez remplir l'attribut "Button" de la classe "CompoundButton" avec un chemin d'accès XML ( my_checkbox ). Dans le dessin XML, vous devez avoir:
N'oubliez pas de remplacer my_checkbox par votre nom de fichier de la case à cocher drawable, checkbox_not_checked par votre PNG drawable qui est votre case à cocher quand elle n'est pas cochée et checkbox_checked avec votre image lorsqu'elle est cochée.
Pour la taille, mettez directement à jour les paramètres de mise en page.
la source
android:background
vs theandroid:button
; puis déclarant leandroid:button
comme transparent. De cette façon, le texte peut être placé à l'intérieur du bouton.Afin de masquer le bouton radio par défaut, je suggère de supprimer le bouton au lieu de le rendre transparent, car tous les commentaires visuels sont gérés par l'arrière-plan dessinable:
Il serait également préférable d' utiliser des styles car il existe plusieurs boutons radio:
Vous aurez également besoin du dessinable Seslyn customButtonBackground .
la source
La meilleure façon d'ajouter un dessin personnalisé est:
La superposition d'ombre par dessin personnalisé est supprimée ici.
la source
background
celle. Si vous définissez l'arrière-plan, vous ne pouvez pas ajouter de texte au RadioButton et devez placer votre propre TextViewMéthode simple essayez ceci
Créez une nouvelle mise en page dans le dossier dessinable et nommez-la custom_radiobutton (vous pouvez également renommer)
Utilisez ceci dans votre activité de mise en page
la source
Le code ci-dessous est un exemple de bouton radio personnalisé. suivez les étapes ci-dessous.
Fichier XML.
2. ajoutez le xml personnalisé pour les boutons radio
2.1.autre dessinable
custom_other_button.xml
2.2.femelle dessinable
custom_female_button.xml
2.3. mâle tirable
custom_radio_button.xml
la source
Je me rends compte que c'est une réponse tardive, mais en regardant developer.android.com, il semble que le bouton Bascule serait idéal pour votre situation.
http://developer.android.com/guide/topics/ui/controls/togglebutton.html
Et bien sûr, vous pouvez toujours utiliser les autres suggestions pour avoir un arrière-plan dessinable pour obtenir un look personnalisé que vous souhaitez.
Maintenant, si vous voulez aller avec votre édition finale et avoir un effet de "halo" autour de vos boutons, vous pouvez utiliser un autre sélecteur personnalisé pour faire exactement cela.
la source