有没有人知道是否可以使ImageView可检查.我尝试在我的项目中使用State-list drawable资源,我为ImageView检查状态定义图片,但是没有属性可以使ImageView可检查,只能单击.
也许有人知道解决这个问题的方法吗?
and*_*per 27
使用此自定义ImageView实现(从此处获取):
public class CheckableImageView extends ImageView implements Checkable {
private boolean mChecked;
private static final int[] CHECKED_STATE_SET = { android.R.attr.state_checked };
public CheckableImageView(final Context context, final AttributeSet attrs) {
super(context, attrs);
}
@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 toggle() {
setChecked(!mChecked);
}
@Override
public boolean isChecked() {
return mChecked;
}
@Override
public void setChecked(final boolean checked) {
if (mChecked == checked)
return;
mChecked = checked;
refreshDrawableState();
}
}
Run Code Online (Sandbox Code Playgroud)
Abh*_*nav 13
而不是使ImageView可检查,您可以设置一个状态列表drawable作为一个复选框的背景,将自动翻转图像.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checkable="true" android:drawable="@drawable/icon_pressed" /> <!-- pressed -->
<item android:state_checked="true" android:drawable="@drawable/icon_focused" /> <!-- focused -->
<item android:drawable="@drawable/icon_default" /> <!-- default -->
</selector>
Run Code Online (Sandbox Code Playgroud)