I\'m using a Button
just follow this code i hope it's really helpful for you..
boolean isIconChange;
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
isIconChange = !isIconChange;
if(isIconChange){
button.setCompoundDrawablesWithIntrinsicBounds(R.drawable.like, 0, 0, 0);
button.setTextColor(Color.BLACK);
} else {
button.setCompoundDrawablesWithIntrinsicBounds(R.drawable.dislike, 0, 0, 0);
button.setTextColor(Color.RED);
}
}
});
The safest way to set the left drawable without changing the values of the other drawables (top, right, and bottom):
Drawable[] drawables = textViewExample.getCompoundDrawables();
textViewExample.setCompoundDrawablesWithIntrinsicBounds(leftDrawable, drawables[1], drawables[2], drawables[3]);
I recomend that instead of using a button you use an Imageview and add an onclick listener to it. That way you can just do Imageview.setbitmap(bitmap)
and create a bitmap from one of your drawables
Try this:
int imgResource = R.drawable.left_img;
button.setCompoundDrawablesWithIntrinsicBounds(imgResource, 0, 0, 0);
Reference
To do this, you can use the
setCompoundDrawables(...);
method. Be aware that comes with TextView, not Button.
This is how to use it:
Drawable img = getContext().getResources().getDrawable( R.drawable.yourimage);
img.setBounds( 0, 0, 60, 60 ); // set the image size
txtVw.setCompoundDrawables( img, null, null, null );
Taken from: How to programmatically set drawableLeft on Android button?