web-dev-qa-db-fra.com

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

Je dois faire un bouton à bascule en 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

97
MBMJ

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

La solution d'AkashG ne fonctionne pas pour moi. Lorsque j’ai configuré check.xml en arrière-plan, il s’est tout simplement arrêté 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>
46
MistaGreen

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;
            }
        }
    });
2
Srishti Roy