При любом поиске любой информации о том, как предоставить свое собственное пользовательское состояние для использования в селекторе списков рисованных состояний, происходит очень мало, но почти все из них (здесь и в других местах) ссылаются на эту публикацию в группах Google .
У меня есть геттеры и сеттеры, подобные этому: (не включено в вышеприведенный пост, но я использую их формулировку для простоты)
public void setFried(boolean fried){
if(mFried != fried){
mFried = fried;
refreshDrawableState();
}
}
public void isFried(){
return mFried;
}
Я пытался заставить его работатьв последние пару часов, и, кажется, ничего не работает.Это просто не меняет внешний вид.Я наблюдал за тем, что произошло, как он вызывал onCreateDrawableState (), и смотрел, что получится из getDrawableState () после изменения пользовательского состояния.Значения пользовательских состояний фактически отображаются в массиве drawableState.
Поскольку я вижу, что состояние фактически сливается в массив, и, поскольку оно, похоже, полностью игнорирует любое из моих пользовательских состояний в селекторе,Я думаю, что xml должен быть неправильным.
Вот что предложено в посте:
<selector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/my.app.package">
<item android:drawable="@drawable/item_baked" state_baked="true"
state_fried="false" />
<item android:drawable="@drawable/item_fried" state_baked="false"
state_fried="true" />
<item android:drawable="@drawable/item_overcooked" state_baked="true"
state_fried="true" />
<item android:drawable="@drawable/item_raw" state_baked="false"
state_fried="false" />
</selector>
Можете ли вы просто написать state_fried и state_baked или им нужен префикс, такой как app: state_fried?Если я пытаюсь добавить префикс, я получаю сообщение об ошибке консоли: No resource identifier found for attribute 'state_fried' in package my.app.package
Кто-нибудь на самом деле заставляет работать пользовательские состояния?Ссылочный пост - это все, что вам нужно, чтобы заставить это работать или что-то не так с ним или отсутствует?
Я не знаю, имеет ли это какое-то значение, но я использую проект библиотеки Android и селектор иattr.xml находится в проекте библиотеки.
Спасибо
Обновление Похоже, проблема в том, что проекты библиотеки плохо работают с пользовательскими атрибутами.См. здесь , здесь , здесь .
К сожалению, не было найдено много решений ...