LWUIT: вкладки - как отметить текущую выбранную вкладку

У меня есть 4 вкладки. Каждая вкладка представлена ​​кнопкой. Эти кнопки используются для выбора отображаемой вкладки. Каждая кнопка имеет значок и текст.

Я хотел бы выделить текущую выбранную вкладку, изменив цвет фона и цвет текстовой метки соответствующей кнопки. Я хотел бы сделать это с помощью редактора тем и ресурсов.

Я создал тему и указал невыбранные, выделенные и нажатые стили для UIID "Tab". Мои вкладки отлично смотрятся в Sun WTK! Отлично! Но я обнаружил, что на реальном телефоне вкладки всегда выглядят как невыбранные. Я пробовал на Nokia 5800 XPressMusic и C7. Почему разница?

После некоторых экспериментов я выяснил причину - кнопки могут быть только в 2 состояниях: не выбраны и нажаты. Они никогда не будут в выбранном состоянии. На эмуляторе, когда я перемещаюсь к кнопке с помощью навигационных клавиш, она становится выделенной.

Итак, что я должен сделать, чтобы отметить текущую вкладку?

2 ответа

Решение

Я реализовал то, что мне было нужно. Спасибо Шаю и его примеру.

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

Ниже приведены некоторые важные замечания о моем решении.

  1. Вызов addActionListener для кнопок ПОСЛЕ они добавили на вкладки.
  2. При нажатии любой кнопки вкладки обновите НЕИЗБРАННЫЕ стили стилей кнопок вкладки. Также вы можете поменять свои иконки.
  3. Форма вызова repaint() после шага 2.

Вы можете использовать несколько разных подходов, особенно в версии 1.5.

LWUIT 1.5 имеет компонент Tabs, который в значительной степени делает все за вас и обладает удивительной гибкостью.

Он использует переключатели, на которых метод setToggleButton(true) вызывается. Кнопки переключения действуют как переключатели, поэтому, когда вы нажимаете кнопку в группе, она остается нажатой и отображается в стиле ToggleButton (вы можете установить UIID по своему усмотрению). Посмотрите пример использования переключающих кнопок в демонстрационной части шрифта LWUIT.

Опция, которая будет работать для более старых версий LWUIT, - просто установить UIID кнопки на другое значение при ее нажатии (и восстановить UIID ранее выбранной кнопки к исходному значению).

Другие вопросы по тегам