Je viens d'ajouter un nouveau dossier drawable
sous le dossier res
. Dans le dossier drawable
, j'ai copié le ic_launcher.png
fichier de drawable-hdpi
dossier. Je veux changer l'image ImageButton
standard par la nouvelle lorsque j'appuie sur le bouton. J'ai écrit du code, mais lorsque je démarre l'application, elle se bloque.
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é pour cela, et cela ne fonctionne pas non plus.
@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: CECI FONCTIONNE. 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);
}
};
Cela m'a un peu trompé - ce devrait être setImageResource
au lieu de setBackgroundResource
:) !!
Les éléments suivants fonctionnent bien:
ImageButton btn = (ImageButton)findViewById(R.id.imageButton1);
btn.setImageResource(R.drawable.actions_record);
tandis que lors de l'utilisation de setBackgroundResource
l'image réelle du bouton image reste tandis que l'image d'arrière-plan est modifiée, ce qui conduit à un objet imageButton laid
Merci.
<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>
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);
Vous pouvez le faire directement dans votre fichier XML:
Android:onClick="@drawable/ic_action_search"
Vous avez un bouton d'assignation à votre variable imgButton
:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgButton = (Button) findViewById(R.id.imgButton);
imgButton.setOnClickListener(imgButtonHandler);
}