2

我有一个可绘制状态列表选择器,在选择时需要显示不同的可绘制对象。

我扩展了使用可绘制接口的 View 类,Checkable这可以正常工作。

但是,当我只过滤时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正常工作?

4

2 回答 2

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;
}
于 2013-10-13T00:27:45.567 回答
1

我想到了。onCreateDrawableState如果在调用 super 后检查视图并增加了您添加的额外属性的数量,则需要实现并添加 state_checked attr。此处不再有代码,抱歉。

于 2012-02-20T19:13:35.587 回答