Как сделать так, чтобы Blackberry BitmapField не фокусировался во время выполнения

Как сделать ежевику BitmapField не фокусируется во время выполнения? Я хочу сделать его затемненным в зависимости от определенного события.

2 ответа

Расширьте BitmapField, чтобы переопределить isFocusable() метод как это:

public class FocusableBitmapField extends BitmapField {
    //Default value depending on whether you want it that way.
    private boolean focusable = true;

    public boolean isFocusable() {
        return focusable;
    }

    public boolean setFocusable(boolean focusable) {
        this.focusable = focusable;
    }
}

В большинстве случаев это работает:

field.setEditable(false);

Вы также можете создать не фокусируемое поле, передав флаг стиля Field.NON_FOCUSABLE или же Field.FOCUSABLE в конструктор, но после создания экземпляра вы не можете изменить его фокусируемое состояние. Даже если бы вы могли, тогда поле не будет выглядеть "затемненным" или "отключенным", но просто фокус переместится к следующему фокусируемому полю после него. Примером этого являются не фокусируемые поля меток.

ОБНОВЛЕНИЕ: Это будет работать для встроенных полей, таких как EditFields, Checkbox, RadioButtons и т. Д. В вашем случае это не работает, поскольку BitmapField не является "редактируемым", это поле только для чтения. Вы можете сделать трюк, как в ответах @adwiv, но с "отключенным" или серым наложением вам придется реализовать его самостоятельно.

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