Обработка выбранных/не выбранных состояний с помощью ImageView в качестве индикаторов вкладок

Я использую ImageViews для индикаторов вкладок в TabActivity. У меня есть две копии одного и того же файла jpeg, одна из которых масштабирована до 75% от оригинала. Что я хочу сделать, так это использовать нормальный размер для выбранного и меньший для невыбранного.

StateListDrawable не работает с ImageView, поэтому я полагаю, что должен справиться с этим самостоятельно. Все, что я могу найти, что, похоже, связано с изменением выбора вкладки, это TabHost.onTabChanged(String tabId) - я предполагаю, что tabId - это строка, которую я передал new TabSpec(...).

Это единственный способ отслеживать изменения вкладок? Было бы полезно иметь обработчик событий (или обработчики), чтобы позволить ранее выбранной вкладке изменять состояние просмотра, а затем новую вкладку делать то же самое. Я могу поддерживать такую ​​переменную, как int currentSelection, но было бы полезно, если бы ее можно было немного автоматизировать.


person Squonk    schedule 14.01.2011    source источник
comment
StateListDrawable не работает с ImageView — конечно, работает.   -  person CommonsWare    schedule 14.01.2011
comment
@CommonsWare: я получаю исключение ClassCastException, когда пытаюсь использовать setImageDrawable() ImageView, когда я использую файл XML, определяющий «селектор» для StateListDrawable. Я бегал кругами с этим и не мог решить его. Любые ссылки на примеры кода, на которые вы можете мне указать?   -  person Squonk    schedule 14.01.2011
comment
Используйте setImageResource(), а не setImageDrawable().   -  person CommonsWare    schedule 14.01.2011
comment
@CommonsWare: Ах! Спасибо. Возможно, это единственное, что я не пробовал прошлой ночью, так как медленно сводил себя с ума, пытаясь решить эту проблему. Первая попытка TabActivity, но я буду помнить об этом в будущем. Еще раз спасибо.   -  person Squonk    schedule 14.01.2011


Ответы (1)


Решение. Мой идеальный подход состоял в том, чтобы использовать StateListDrawables с моими ImageView, но я получал ClassCastException при попытке использовать ImageView.setImageDrawable() с файлами xml, определяющими изображения состояния.

Ответ заключается в том, чтобы вместо этого использовать setImageResource(), он отлично работает для того, что мне нужно. Спасибо CommonsWare за то, что указали мне правильное направление.

person Squonk    schedule 14.01.2011