Установите цвет фокуса на интерактивном массиве HorizontalFieldManager в BlackBerry

У меня есть массив горизонтальных полей, который содержит растровое изображение и поле метки каждое. Целая строка должна быть интерактивной, что пока работает, но как правильно настроить цвет фокуса? На данный момент функции onFocus и onUnfocus полностью игнорируются.

Это определение моего массива:

for (int i = 0; i < listSize; i++) {
        logInDetailManager[i] = new HorizontalFieldManager(
                Manager.USE_ALL_WIDTH | Field.FOCUSABLE) {

            protected void onFocus(int direction) {
                super.onFocus(direction);
                background_color = Color.RED;
                invalidate();
            }

            protected void onUnfocus() {
                invalidate();
                background_color = Color.GREEN;
            }

И вот как я добавляю свои горизонтальные поля:

logInDetailManager[i].setChangeListener(this);
logInDetailManager[i].add(dummyIcon[i]);
logInDetailManager[i].add(new LabelField("hello"));
logInDetailManager[i].add(new NullField(Field.FOCUSABLE));
add(logInDetailManager[i]);

1 ответ

Извините, я не смог прокомментировать вчерашний пост, так как я новичок в Stackru;) Вот как я решил это:

Я удалил onFocus() и onUnfocus() из HFM и установил цвет фона в методе рисования, чтобы цвет всей строки изменялся при фокусировке:

 protected void paint(Graphics graphics) {

        graphics.setBackgroundColor(isFocus() ? Color.RED : Color.GREEN);
        graphics.clear();
        invalidate();
        super.paint(graphics);
}

Я также обнаружил, что если вы хотите установить более сложные фоны (например, с градиентом), вы также можете использовать метод setBackground(int visual, Background background):

 Background bg_focus = (BackgroundFactory
        .createLinearGradientBackground(Color.GREEN, Color.LIGHTGREEN,
        Color.LIGHTGREEN, Color.GREEN));

 loginDetailManager[i].setBackground(VISUAL_STATE_FOCUS, bg_focus);

Убедитесь, что вы удалили метод рисования при использовании функции setBackground!

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