104 votes

Bouton bascule utilisant deux images sur un état différent

J'ai besoin de faire un bouton bascule utilisant deux images au lieu de l'état ON / OFF.

À l'état désactivé, je définis une image d'arrière-plan.Mais le texte désactivé ne peut pas être supprimé pendant que j'utilise l'image d'arrière-plan.

Et je ne peux pas définir une autre image sur l'état ON en cliquant sur le bouton bascule :( Je suis nouveau dans Android. J'espère que vous m'aidez à sortir de ce problème.

228voto

AkashG Points 3073

Faire ceci:

 <ToggleButton 
        android:id="@+id/toggle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/check"   //check.xml
        android:layout_margin="10dp"
        android:textOn=""
        android:textOff=""
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:layout_centerVertical="true"/>
 

créer check.xml dans un dossier pouvant être dessiné

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use grey -->
    <item android:drawable="@drawable/selected_image"
          android:state_checked="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/unselected_image"
        android:state_checked="false"/>

 </selector>
 

48voto

MistaGreen Points 133

La solution d'AkashG ne fonctionne pas pour moi. Lorsque je configure check.xml sur l’arrière-plan, il s’agit simplement de rectifier verticalement. Pour résoudre ce problème, vous devez configurer check.xml sur la propriété "android: button":

 <ToggleButton 
    android:id="@+id/toggle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:button="@drawable/check"   //check.xml
    android:background="@null"/>
 

check.xml:

 <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use grey -->
    <item android:drawable="@drawable/selected_image"
          android:state_checked="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/unselected_image"
          android:state_checked="false"/>
    </selector>
 

2voto

Srishti Roy Points 26

Vous pouvez essayer quelque chose comme ça. Ici, en cliquant sur le bouton de l'image, je bascule l'imageview.

 holder.imgitem.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            if(!onclick){
            mSparseBooleanArray.put((Integer) view.getTag(), true);
            holder.imgoverlay.setImageResource(R.drawable.ipad_768x1024_editmode_delete_overlay_com);
            onclick=true;}
            else if(onclick)
            {
                 mSparseBooleanArray.put((Integer) view.getTag(), false);
                  holder.imgoverlay.setImageResource(R.drawable.ipad_768x1024_editmode_selection_com);

            onclick=false;
            }
        }
    });
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X