LWUIT: вкладки - как отметить текущую выбранную вкладку - PullRequest
2 голосов
/ 07 декабря 2011

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 08 декабря 2011

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

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

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

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

1 голос
/ 09 декабря 2011

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

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

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

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