BlackBerry щелкните за пределами поля - PullRequest
1 голос
/ 10 мая 2011

Я реализую пользовательскую кнопку ImageButton для сенсорных устройств (9500,9550,9800, ...). У меня проблема в том, что щелчок (касание) вне поля генерирует событие в фокусированном поле.*)

Я могу решить эту проблему, переместив фокус на пустое поле, но это не очень приятно.Странно то, что это поведение для Field, BitmapField, но не для ButtonField.На самом деле кажется, что когда ButtonField сфокусировано, внешние щелчки не генерируют событие кнопки.

Я пытался расширить ButtonField, но я не смог избавиться от этого глупого фона кнопки.1013 * Итак, мой вопрос;В чем разница между Field и ButtonField, которая вызывает генерацию событий вне Field?

вот как я удалил фон кнопки:

    // cahange button border
    setBorder(BorderFactory
            .createSimpleBorder(new XYEdges(0, 0, 0, 0)));
    setBorder(VISUAL_STATE_ACTIVE, BorderFactory
            .createSimpleBorder(new XYEdges(0, 0, 0, 0)));

1 Ответ

0 голосов
/ 10 мая 2011

Вам просто нужно добавить проверку в touchEvent () для кнопки ImageButton

protected boolean touchEvent(TouchEvent message) {
    //make sure the touch is withing the bounds of our Field
    if(message.getX(1) < 0 || message.getX(1) > getWidth() || message.getY(1) < 0 || message.getY(1) > getHeight()) {
        return false;
    }

    //Do your work
}

Событие касания отправляется в сфокусированное Поле, даже если оно на самом деле не находится на Поле, вы должны вернуть false, чтобы содержащийся Менеджер знал, чтобы отправить его в следующее Поле, которое его примет (Поле, где касание включен или ничего, если он находится на пустом месте).

Edit: Чтобы удалить фон кнопки, переопределите protected void applyTheme() {}

...