BlackBerry在Field外单击

时间:2011-05-10 09:49:26

标签: blackberry imagebutton

我正在为支持触控的设备实现自定义ImageButton(9500,9550,9800,...) 我有问题,点击(触摸)外部字段会在焦点字段中生成事件。(扩展Field时,BitmapField

我可以通过将焦点移动到空场来解决它,但这不是很好。 奇怪的是,此行为适用于FieldBitmapField,但不适用于ButtonField。 看来,当ButtonField聚焦时,外部点击不会生成按钮事件。

我尝试扩展ButtonField,但我无法摆脱那个愚蠢的Button Background。

所以我的问题; FieldButtonField之间导致生成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 :(得分:0)

您只需要在touchButton

的touchEvent()中添加一个检查
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,以便包含的管理器知道将其发送到将接受它的下一个字段(触摸的字段)如果它在空白区域,则表示没有,或者没有。)

编辑: 要删除按钮背景,请覆盖protected void applyTheme() {}