state_checkable не работает на представлении, расширяющем проверяемый
У меня есть селектор списка доступных для рисования состояний, который должен отображаться при рисовании.
Я расширил класс View, который использует drawable с интерфейсом 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_checkable
а также state_checked
правильно работать?
2 ответа
Я понял. Вам необходимо реализовать onCreateDrawableState
и добавьте state_checked attr, если представление вызывается после вызова super с увеличенным количеством добавленных вами дополнительных атрибутов. У меня нет кода прямо здесь, извините.
Расширение предыдущего ответа для всех, кому может понадобиться фактический код для метода 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;
}