android Imagebutton modifier L'Image Surclick

je viens d'ajouter un nouveau dossier à dessiner sous le dossier res. Dans le dossier dessinable, j'ai copié ic_launcher.fichier png du dossier drawable-hdpi. Je veux changer l'image standard D'ImageButton par la nouvelle quand j'appuie sur le bouton. J'ai écrit un code, mais quand j'ai lancé l'application, il s'écrase.

Button imgButton; 

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    findViewById(R.id.imgButton).setOnClickListener(imgButtonHandler);      
}

View.OnClickListener imgButtonHandler = new View.OnClickListener() {

    public void onClick(View v) {

        imgButton.setBackgroundResource(R.drawable.ic_launcher);

    }
};

EDIT: j'ai changé à cela, et cela aussi fonctionne pas.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imgButton = (Button) findViewById(R.id.imgButton);
    imgButton.setOnClickListener(imgButtonHandler);
}


View.OnClickListener imgButtonHandler = new View.OnClickListener() {

    public void onClick(View v) {
        imgButton.setBackgroundResource(R.drawable.ic_launcher);

    }
};

EDIT 2: THIS WORKS. Merci à tous.

ImageButton button;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button= (ImageButton)findViewById(R.id.imgButton);
    button.setOnClickListener(imgButtonHandler);
}


View.OnClickListener imgButtonHandler = new View.OnClickListener() {

    public void onClick(View v) {
        button.setBackgroundResource(R.drawable.ic_launcher);

    }
};
26
demandé sur emlai 2012-09-03 18:09:59

5 réponses

cela m'a un peu induit en erreur - cela devrait être "setImageResource" au lieu de "setBackgroundResource":)!!

Le suivant fonctionne très bien :

ImageButton btn = (ImageButton)findViewById(R.id.imageButton1);       
 btn.setImageResource(R.drawable.actions_record);

lors de l'utilisation du setBackgroundResource l'image actuelle de imagebutton reste pendant que l'image de fond est changée sorcière conduit à un objet imagebutton laid à la recherche

Merci.

53
répondu Yassine Souabni 2014-09-27 10:04:59
<ImageButton android:src="@drawable/image_btn_src" ... />

image_btn_src.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/icon_pressed"/>
<item android:state_pressed="false" android:drawable="@drawable/icon_unpressed"/>
</selector>
11
répondu mismanc 2015-05-27 06:41:53

C'est parce que imgButton est nul. Essayez plutôt ceci:

findViewById(R.id.imgButton).setBackgroundResource(R.drawable.ic_action_search);

ou beaucoup plus facile à lire:

imgButton = (Button) findViewById(R.id.imgButton);
imgButton.setOnClickListener(imgButtonHandler);

puis dans onClick:imgButton.setBackgroundResource(R.drawable.ic_action_search);

7
répondu Carnal 2012-09-03 14:12:33

Vous pouvez le faire dans votre fichier XML:

android:onClick="@drawable/ic_action_search"
3
répondu John Smith 2012-09-03 20:11:36
imgButton la variable:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imgButton = (Button) findViewById(R.id.imgButton);
    imgButton.setOnClickListener(imgButtonHandler);
}
1
répondu hsz 2012-09-03 14:14:52