0

Je voulais créer des sélecteurs personnalisables pour certains boutons radio que je voulais avoir. Voici un exemple de comment je voudrais que mes sélecteurs drawable je voudrais. Ils sont les Public et les Followers sélecteurs comme indiqué ci-dessous:Création d'un sélecteur personnalisable?

enter image description here

Le problème est que j'ai du mal à coiffer mes sélecteurs de cette manière et je ne peux pas à comprendre pourquoi je ne peux pas obtenir un aperçu gris avec un fond de blanc sur les boutons radio non sélectionnés.

Ce fut ma tentative:

privacy_toggle_layout.xml:

<?xml version="1.0" encoding="utf-8"?> 
    <RadioGroup 
    android:layout_margin="16dp" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:checkedButton="@+id/offer" 
     android:id="@+id/privacy_toggle" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/pick_out_line" 
     android:orientation="horizontal"> 

     <RadioButton 
      android:id="@+id/public_toggle" 
      android:background="@drawable/toggle_widget_background" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:button="@null" 
      android:gravity="center" 
      android:text="@string/publicString" 
      android:textAllCaps="true" 
      android:textSize="18sp" 
      android:textColor="@color/white" /> 

     <RadioButton 
      android:id="@+id/followers_toggle" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@drawable/toggle_widget_background" 
      android:button="@null" 
      android:gravity="center" 
      android:text="@string/followers" 
      android:checked="true" 
      android:textSize="18sp" 
      android:textAllCaps="true" 
      android:textColor="@color/white" /> 
    </RadioGroup> 

drawable/pick_out_line.xml:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <corners android:radius="2dp" /> 
    <solid android:color="@color/teal" /> 
    <stroke 
     android:width="5dp" 
     android:color="@color/material_color_grey_400" /> 
</shape> 

toggle_widget_background.xml:

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

I pensé dans pick_out_line.xml, en réglant le stroke à 5dp devrait rendre la frontière grise mais il n'apparaît pas en gris sur le RadioButton. En outre, je n'arrive pas à comprendre comment faire le RadioButton non sélectionné avec un fond blanc avec du texte gris. Si quelqu'un pouvait m'aider, ce serait génial. Merci.

Répondre

0

Vous avez commis une erreur. Il ne devrait pas y avoir d'arrière-plan pour le groupe. Faites 2 versions de pick_out_line.xml, une pick_out_line_selected, et une pick_out_line_unselected.xml. Concevez chacun comment vous le voulez dans cet état. Ensuite, éditez votre fichier toggle_widget_background.xml, et l'android: drawable devrait être les 2 fichiers ci-dessus, pas les couleurs. Définissez ce fichier comme arrière-plan de votre bascule.