Я пытаюсь создать элемент управления, эквивалентный 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. Будем весьма благодарны за любые идеи о том, как это может произойти.