Blackberry Field.VISUAL_STATE_NORMAL - PullRequest
       1

Blackberry Field.VISUAL_STATE_NORMAL

0 голосов
/ 16 июня 2011

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

Кнопки подклассами непосредственно из поля непосредственно для получения требуемого визуального стиля, и они сгруппированы внутри пользовательского GridFieldManager.

Проблема заключается в том, что при нажатии кнопки работают в соответствии с ожиданиями, но как только фокус перемещается, кнопки возвращаются к Field.Visual_STATE_NORMAL (подтверждается выводом на консоль). Единственная настройка для содержащего GridFieldManager - это пара циклов, чтобы определить фокус в других областях, где используется этот менеджер.

Кнопки инициализируются следующим образом:

private void init() {
    this.setBackground( Field.VISUAL_STATE_NORMAL, BackgroundFactory.createLinearGradientBackground(0xfc9b68, 0Xfc9b68, 0xff5800, 0xff5800) );
    this.setBackground( Field.VISUAL_STATE_DISABLED, BackgroundFactory.createLinearGradientBackground(0xe78568, 0xff5800, 0xd53000, 0xd53000) );
    this.setBackground( Field.VISUAL_STATE_FOCUS, BackgroundFactory.createLinearGradientBackground(0xd8d8d8, 0xd8d8d8, 0x0000000, 0x000000) );
}

Проблема в том, что каким-то образом визуальное состояние каждой кнопки сбрасывается. Короче говоря, клиент хочет приложение Blackberry, которое выглядит и ведет себя точно так же, как приложение для iPhone или Android. Будем весьма благодарны за любые идеи о том, как это может произойти.

1 Ответ

0 голосов
/ 20 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...