2010-11-08 3 views
29

Existe-t-il un moyen de spécifier une autre image/couleur d'arrière-plan pour un bouton dans le fichier XML qui va être appliqué onClick, ou dois-je faire un Button.setBackground() dans onClickListener?Faire un bouton Android changer d'arrière-plan en cliquant sur XML

+0

Pour plus de détails et de l'aide de l'implémentation, référez-vous à [les docs android] (http://developer.android.com/resources/tutorials/views/hello-formstuff.html). –

Répondre

94

Pour changer l'image en utilisant le code

public void onClick(View v) { 
    if(v == ButtonName) { 
    ButtonName.setImageResource(R.drawable.ImageName); 
    } 
} 

Ou, en utilisant un fichier XML:

<?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/login_selected" /> <!-- pressed --> 
    <item android:state_focused="true" 
    android:drawable="@drawable/login_mouse_over" /> <!-- focused --> 
    <item android:drawable="@drawable/login" /> <!-- default --> 
</selector> 

En OnClick, il suffit d'ajouter ce code:

ButtonName.setBackgroundDrawable(getResources().getDrawable(R.drawable.ImageName)); 
+0

Merci, exactement ce que je cherchais (la chose d'état de l'article ...) – nbarraille

+0

@ David, merci pour ce poste.J'ai quelques boutons d'image nécessitent cette fonctionnalité (changer l'image sur pressé) Quels sont les changements nécessaires dans Selector & onClick pour tous? peux-tu me guider? – swiftBoy

+0

où pointez-vous exactement sur ce fichier xml dans la deuxième approche? – Paul

6

Dans la dernière version du SDK, vous utiliseriez la méthode setBackgroundResource.

public void onClick(View v) { 
    if(v == ButtonName) { 
    ButtonName.setBackgroundResource(R.drawable.ImageResource); 
    } 
} 
1

Essayez:

public void onclick(View v){ 
      ImageView activity= (ImageView) findViewById(R.id.imageview1); 
     button1.setImageResource(R.drawable.buttonpressed);} 
1
public void methodOnClick(View view){ 

Button.setBackgroundResource(R.drawable.nameImage); 

} 

je recommande utiliser le bouton à l'intérieur LinearLayout pour ajuster la taille de linéaire.

Questions connexes