在没有动画的情况下以编程方式检查CheckBox集

时间:2016-08-09 04:01:47

标签: android listview arraylist checkbox

我有一个ListView,其中每个项目都是CheckBox。我将每个项目的状态保存在ArrayList中,以确保回收的视图不会混淆。

唯一的问题是我必须在每个CheckBox行项目上使用setChecked,它首先显示已选中,然后显示取消选中动画。

有没有办法在没有动画的情况下强制在CheckBox上使用setChecked?我的意思是,即时。

1 个答案:

答案 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()即可。希望这会有所帮助。