state_checkable对扩展可检查的视图不起作用

时间:2012-02-17 16:36:30

标签: android state statelistdrawable

我有一个可绘制的状态列表选择器,在选择时需要显示不同的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_checkablestate_checked正常工作?

2 个答案:

答案 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之后检查了视图,并且增加了额外属性数量。这里没有代码了,抱歉。