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?
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. :)
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"/>
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" />
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"
Pour changer le fond du bouton on peut suivre 2 méthodes
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
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>
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).