我有一个可绘制的状态列表选择器,在选择时需要显示不同的drawable。
我扩展了使用带有接口Checkable
的drawable的View类,这样就可以了。
但是,当我只对state_checkable
进行过滤时,它会显示值为false的图像。我认为这意味着我的实施存在问题。
<item android:drawable="@drawable/button_6_default" android:state_checkable="false" />
<item android:drawable="@drawable/button_disable_default" android:state_checkable="true" />
如何让state_checkable
和state_checked
正常工作?
答案 0 :(得分:2)
为可能需要onCreateDrawableState方法的实际代码的任何其他人扩展上一个答案。这是从这个库中提取的:https://github.com/ManuelPeinado/MultiChoiceAdapter
private static final int[] CHECKED_STATE_SET = {
android.R.attr.state_checked
};
@Override
protected int[] onCreateDrawableState(int extraSpace) {
final int[] drawableState = super.onCreateDrawableState(extraSpace + 2);
if (isChecked) {
mergeDrawableStates(drawableState, CHECKED_STATE_SET);
}
return drawableState;
}
答案 1 :(得分:1)
我明白了。您需要实现onCreateDrawableState
并添加state_checked attr,如果在调用super之后检查了视图,并且增加了额外属性数量。这里没有代码了,抱歉。