Просмотр состояния потерян с щелчком - PullRequest
2 голосов
/ 29 июля 2010

Я создал пользовательский вид, который по сути является объектом галереи, который можно скрыть и отобразить (используя View.VISIBLE и View.GONE), нажав на TextView.

Изображения, которые я размещаю в этой галерее, имеют собственный фоновый селектор StateListDrawable. Все работает нормально, за исключением того, что состояние изображений в галерее теряется, когда галерея переходит из View.GONE в View.VISIBLE, и что рисуемый селектор является рисоваемым по умолчанию (translucent_box).

Это элементы в моем селекторе XML:

<item android:drawable="@drawable/red_box" android:state_pressed="true" />
<item android:drawable="@drawable/orange_box" android:state_selected="true" android:state_focused="true" />
<item android:drawable="@drawable/blue_box" android:state_selected="true" />
<item android:drawable="@drawable/translucent_box" /&gt

Самое странное, что после возврата из вызова startActivity состояние восстанавливается, и все отображается нормально, пока я не спрячусь и снова не покажу галерею.

Я пытался поиграть с добавлением различных состояний в селекторе и программно пытаться обновить вид ... безрезультатно.

Есть идеи? Я уверен, что это должно быть что-то тривиальное ...

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 29 июля 2010

Мне удалось найти обходной путь для моего дела.Я не уверен, что это лучший способ, и я все еще не знаю, что вызывает поведение, но я смог получить то, что хотел, вызвав notifyDataSetChanged () на адаптере моей галереи.

Если кто-нибудьУ меня есть лучшее предложение о том, как решить проблему (мое кажется, что это может быть немного излишним) или даже описание того, почему это происходит, я был бы признателен ... Мне очень любопытно, что происходит за кулисами.

0 голосов
/ 29 июля 2010

Я не уверен, что это актуально - но нужно ли вам реализовать View.verifyDrawable?В документах не очень ясно, когда вам нужно это сделать.

startActivity по умолчанию запускает анимацию - что, вероятно, заставляет представление обновляться правильно.Другой возможный способ взломать это - запустить пустую анимацию какого-то рода.

...