У меня проблема: у меня есть ListView с прослушивателем MULTI_CHOICE, который открывает ContextualActionBar. Для каждого элемента в этом списке я установил фон в корневом макете. Это XML:
<item android:drawable="@color/light_blue_alpha"
android:state_activated="true"/>
<item android:drawable="@color/light_blue"
android:state_pressed="true"/>
<item android:drawable="@drawable/card_background"/>
В этом случае фоном по умолчанию является макет карты (в основном белый). Когда элемент нажат, фон становится светло-голубым. При активации (через выбор CAB) фон становится светло-голубым с альфа-каналом 0,5.
Вот что происходит: запускаю CAB. Если я выберу новый элемент во время CAB, этот элемент изменит свой фон на light_blue
(при нажатии). Когда я отпускаю палец, он меняется на фон по умолчанию card_background
. Через несколько миллисекунд он активируется, а затем меняется на light_blue_alpha
.
Так что в основном я получаю мерцание сине-бело-голубого. Чего я хочу добиться, так это «удалить» транзакцию белого фона. Например, я вижу, что приложение Gmail делает именно то, что я хочу.
Как этого добиться? Спасибо!!
РЕДАКТИРОВАТЬ: я попытался переместить все в корневой списокSelector. Это селектор:
<item android:state_pressed="true" android:drawable="@color/light_blue"/>
<item android:state_activated="true" android:drawable="@color/light_blue_alpha"/>
<item android:drawable="@android:color/transparent"/>
Я также установил для drawOnTop значение true, и нажатый фон применяется правильно. Но state_activated — нет! Когда я запускаю CAB, элемент возвращается к своему фону по умолчанию. Почему не принимает фон state_activated??
what is happening
иwhat you want to acheive
:) - person Maveňツ   schedule 01.10.2014