我有一个ListView,其中每个项目都是CheckBox。我将每个项目的状态保存在ArrayList中,以确保回收的视图不会混淆。
唯一的问题是我必须在每个CheckBox行项目上使用setChecked,它首先显示已选中,然后显示取消选中动画。
有没有办法在没有动画的情况下强制在CheckBox上使用setChecked?我的意思是,即时。
答案 0 :(得分:0)
您可以使用CheckBox
中自己的支票图像来实现此目的。您需要可以从http://android-holo-colors.com/
然后我们可以在代码中引用这些drawable:
Drawable mEnabledBg = getResources().getDrawable(R.drawable.check_bg_enabled);
Drawable mCheckedBg = getResources().getDrawable(R.drawable.check_bg_checked);
Drawable mDisabledBg = getResources().getDrawable(R.drawable.check_bg_disabled);
现在,我们在StateListDrawbles
:
StateListDrawable tickColorStates = new StateListDrawable();
tickColorStates.addState(new int[]{android.R.attr.state_checked}, mCheckedBg); //checked
tickColorStates.addState(new int[]{-android.R.attr.state_checked, android.R.attr.state_enabled}, mEnabledBg); //un-checked
tickColorStates.addState(new int[]{-android.R.attr.state_enabled}, mDisabledBg); //disabled
checkBox.setButtonDrawable(tickColorStates);
当然,此设置也可以在xml中完成,您只需要调用setButtonDrawable()
即可。希望这会有所帮助。