LWUIT: вкладки - как отметить текущую выбранную вкладку
У меня есть 4 вкладки. Каждая вкладка представлена кнопкой. Эти кнопки используются для выбора отображаемой вкладки. Каждая кнопка имеет значок и текст.
Я хотел бы выделить текущую выбранную вкладку, изменив цвет фона и цвет текстовой метки соответствующей кнопки. Я хотел бы сделать это с помощью редактора тем и ресурсов.
Я создал тему и указал невыбранные, выделенные и нажатые стили для UIID "Tab". Мои вкладки отлично смотрятся в Sun WTK! Отлично! Но я обнаружил, что на реальном телефоне вкладки всегда выглядят как невыбранные. Я пробовал на Nokia 5800 XPressMusic и C7. Почему разница?
После некоторых экспериментов я выяснил причину - кнопки могут быть только в 2 состояниях: не выбраны и нажаты. Они никогда не будут в выбранном состоянии. На эмуляторе, когда я перемещаюсь к кнопке с помощью навигационных клавиш, она становится выделенной.
Итак, что я должен сделать, чтобы отметить текущую вкладку?
2 ответа
Я реализовал то, что мне было нужно. Спасибо Шаю и его примеру.
Я не использовал свойства темы и сделал все настройки в коде. Я сделал это потому, что не понял, как может помочь установка уникального UIID, поскольку проблема заключается не в определении UIID, для которого необходимо изменить реквизиты, а в определении стиля кнопки, которую нужно изменить.
Ниже приведены некоторые важные замечания о моем решении.
- Вызов
addActionListener
для кнопок ПОСЛЕ они добавили на вкладки. - При нажатии любой кнопки вкладки обновите НЕИЗБРАННЫЕ стили стилей кнопок вкладки. Также вы можете поменять свои иконки.
- Форма вызова
repaint()
после шага 2.
Вы можете использовать несколько разных подходов, особенно в версии 1.5.
LWUIT 1.5 имеет компонент Tabs, который в значительной степени делает все за вас и обладает удивительной гибкостью.
Он использует переключатели, на которых метод setToggleButton(true)
вызывается. Кнопки переключения действуют как переключатели, поэтому, когда вы нажимаете кнопку в группе, она остается нажатой и отображается в стиле ToggleButton (вы можете установить UIID по своему усмотрению). Посмотрите пример использования переключающих кнопок в демонстрационной части шрифта LWUIT.
Опция, которая будет работать для более старых версий LWUIT, - просто установить UIID кнопки на другое значение при ее нажатии (и восстановить UIID ранее выбранной кнопки к исходному значению).