web-dev-qa-db-fra.com

comment changer l'image de fond du bouton quand on clique dessus?

Je souhaite modifier l'image d'arrière-plan d'un bouton lorsque l'utilisateur clique dessus.

Ceci est mon code:

Button tiny = (Button)findViewById(R.id.tiny);
tiny.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Button tiny = (Button)findViewById(R.id.tiny);
        tiny.setBackgroundResource(R.drawable.a9p_09_11_00754);

        TextView txt = (TextView)findViewById(R.id.txt);
        txt.setText("!---- On click ----!");
    }
});

Ce code est-il correct? Est-ce qu'il appelle un bouton sur son événement?

40
omid nazifi

vous pouvez implémenter dans un fichier XML pour cela comme suit:

<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_focused="true" Android:drawable="@drawable/your_imagename_while_focused"/>
<item Android:state_pressed="true" Android:drawable="@drawable/your_imagename_while_pressed" />
<item Android:drawable="@drawable/image_name_while_notpressed" />  //means normal
</selector>

maintenant, enregistrez ce fichier xml dans un dossier amovible et nommez-le supposément abc.xml et définissez-le comme suit

 Button tiny = (Button)findViewById(R.id.tiny);
 tiny.setBackgroundResource(R.drawable.abc);

J'espère que cela vous aidera. :)

90
Android Killer

C'est très facile à mettre en œuvre. Pour cela, vous devez créer un fichier xml (fichier de sélection) et le placer dans un dossier pouvant être dessiné dans res. Après cela, définissez le fichier xml dans l’arrière-plan du bouton dans votre fichier de présentation.

button_background_selector.xml

<?xml version="1.0" encoding="UTF-8"?>
<selector
  xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_focused="true" Android:state_pressed="false" Android:drawable="@drawable/your_hover_image" />
    <item Android:state_focused="true" Android:state_pressed="true" Android:drawable="@drawable/your_hover_image" />
    <item Android:state_focused="false" Android:state_pressed="true" Android:drawable="@drawable/your_hover_image"/>
    <item Android:drawable="@drawable/your_simple_image" />
</selector>

Maintenant, définissez le fichier ci-dessus en arrière-plan du bouton.

<Button
    Android:layout_width="fill_parent" 
    Android:layout_height="wrap_content"
    Android:textColor="@color/grey_text"
    Android:background="@drawable/button_background_selector"/>
55
Chirag

Désolé c'est faux.

Pour modifier la couleur/l'image d'arrière-plan en fonction de l'événement particulier (focus, appuyez sur, normal), vous devez définir un fichier de sélection de bouton et l'implémenter en tant qu'arrière-plan du bouton.

Par exemple: button_selector.xml (définissez ce fichier dans le dossier pouvant être dessiné)

<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
     <item Android:state_pressed="true"
           Android:color="#000000" /> <!-- pressed -->
     <item Android:state_focused="true"
           Android:color="#000000" /> <!-- focused -->
     <item Android:color="#FFFFFF" /> <!-- default -->
 </selector>

    <!-- IF you want image instead of color then write 
Android:drawable="@drawable/your_image" inside the <item> tag -->

Et l'appliquer comme:

 <Button
      Android:layout_width="wrap_content"
      Android:layout_height="wrap_content"
      Android:drawable="@drawable/button_selector.xml" />
8
Paresh Mayani

utiliser ce code créer un fichier xml dans le nom du dossier pouvant être dessiné: bouton

<?xml version="1.0" encoding="utf-8"?>
  <selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
  <item 
     Android:state_pressed="true" 
     Android:drawable="@drawable/buutton_pressed" />
  <item 
     Android:drawable="@drawable/button_image" />
</selector>

et dans le fichier XML de bouton

 Android:background="@drawable/button"
5

Pour changer le fond du bouton on peut suivre 2 méthodes

  1. Dans le bouton OnClick, ajoutez simplement ce code:

     public void onClick(View v) {
         if(v == buttonName) {
            buttonName.setBackgroundDrawable
             (getResources().getDrawable(R.drawable.imageName_selected));
          }
    
           }
    

    2.Créez button_background.xml dans le dossier pouvant être dessiné (avec xml)

    res -> drawable -> button_background.xml

       <?xml version="1.0" encoding="UTF-8"?>
        <selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    
             <item Android:state_selected="true"
                   Android:drawable="@drawable/tabs_selected" /> <!-- selected-->
             <item Android:state_pressed="true"
                   Android:drawable="@drawable/tabs_selected" /> <!-- pressed-->
             <item  Android:drawable="@drawable/tabs_selected"/>
        </selector>
    

    Maintenant, définissez le fichier ci-dessus dans le fichier d'arrière-plan du bouton.

         <Button
               Android:layout_width="fill_parent" 
               Android:layout_height="wrap_content"
               Android:background="@drawable/button_background"/>
    
                              (or)
    
             Button tiny = (Button)findViewById(R.id.tiny);
                   tiny.setBackgroundResource(R.drawable.abc);
    

    2ème méthode est préférable pour définir le bouton fd d'arrière-plan

3
Ann

Il vous suffit de définir l’arrière-plan et de donner le fichier previous.xml en arrière-plan du bouton dans votre fichier de présentation.

<Button
 Android:id="@+id/button1"
 Android:background="@drawable/previous"
 Android:layout_width="200dp"
 Android:layout_height="126dp"
 Android:text="Hello" />

and done.Edit Voici le fichier previous.xml dans le répertoire drawable

<?xml version="1.0" encoding="utf-8"?>

<item Android:drawable="@drawable/onclick" Android:state_selected="true"></item>
<item Android:drawable="@drawable/onclick" Android:state_pressed="true"></item>
<item Android:drawable="@drawable/normal"></item>

2
Sanam Baig

Vous pouvez également créer des formes directement dans la balise item, au cas où vous souhaiteriez ajouter plus de détails à votre vue, comme ceci:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_pressed="true">
        <shape>
            <solid Android:color="#81ba73" />
            <corners Android:radius="6dp" />
        </shape>
        <ripple Android:color="#c62828"/>
    </item>
    <item Android:state_enabled="false">
        <shape>
            <solid Android:color="#788e73" />
            <corners Android:radius="6dp" />
        </shape>
    </item>
    <item>
        <shape>
            <solid Android:color="#add8a3" />
            <corners Android:radius="6dp" />
        </shape>
    </item>
</selector>

Notez qu'Android parcourt les éléments de haut en bas. Par conséquent, vous devez placer la variable item sans condition en bas de la liste (elle agit donc comme un paramètre par défaut/de secours).

0
Junior Damacena