2016-08-09 13 views
1

Ich habe eine ListView wo jedes Element eine CheckBox ist. Ich behalte den Status jedes Elements in einer ArrayList, um sicherzustellen, dass die wiederverwerteten Ansichten nicht verwechselt werden.CheckBox-Set programmgesteuert überprüft, ohne zu animieren

Das einzige Problem mit diesem ist, dass ich SetChecked für jedes CheckBox-Zeilenelement verwenden muss, das zunächst überprüft zeigt dann die Aufhebung der Markierung Animation.

Gibt es eine Möglichkeit, setChecked auf einer CheckBox ohne die Animation zu erzwingen? Sofort, meine ich.

+1

Wenn Sie es einstellen, wenn es nicht an ein Fenster angeschlossen ist, dann wird es keine Animation geben. Weitere Informationen finden Sie unter http://stackoverflow.com/questions/27139262/change-switch-state-without-animation. – lionscribe

+0

Das hat für mich funktioniert. Vielen Dank! –

Antwort

0

Eine der Möglichkeiten, wie Sie dies tun können, ist die Verwendung Ihrer eigenen Scheckbilder im CheckBox. Sie werden für die verschiedenen Zustände Bilder benötigen, die Sie von http://android-holo-colors.com/

erhalten, dann können wir diese Drawables in unserem Code als Referenz:

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); 

Jetzt verwenden wir sie in ein 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); 

Natürlich kann dieses Setup auch in XML erfolgen und Sie müssen dann einfach setButtonDrawable() aufrufen. Hoffe das hilft.

Verwandte Themen