Skip to content

Instantly share code, notes, and snippets.

@hendrawd
Last active September 3, 2022 07:33
Show Gist options
  • Save hendrawd/661824a721c22b3244667379e9358b5f to your computer and use it in GitHub Desktop.
Save hendrawd/661824a721c22b3244667379e9358b5f to your computer and use it in GitHub Desktop.
An image view that checkable
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Checkable;
import android.widget.ImageView;
/**
* @author hendrawd on 6/23/16
*/
public class CheckableImageView extends ImageView implements Checkable {
public CheckableImageView(Context context) {
super(context);
}
public CheckableImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
private boolean mChecked = false;
private static final int[] CHECKED_STATE_SET = {android.R.attr.state_checked};
@Override
public int[] onCreateDrawableState(final int extraSpace) {
final int[] drawableState = super.onCreateDrawableState(extraSpace + 1);
if (isChecked())
mergeDrawableStates(drawableState, CHECKED_STATE_SET);
return drawableState;
}
@Override
public void setChecked(boolean checked) {
if (mChecked != checked) {
mChecked = checked;
refreshDrawableState();
}
}
@Override
public boolean isChecked() {
return mChecked;
}
@Override
public void toggle() {
setChecked(!mChecked);
}
@Override
public void setOnClickListener(final OnClickListener l) {
View.OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
toggle();
l.onClick(v);
}
};
super.setOnClickListener(onClickListener);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment