我正在为支持触控的设备实现自定义ImageButton(9500,9550,9800,...)
我有问题,点击(触摸)外部字段会在焦点字段中生成事件。(扩展Field
时,BitmapField
)
我可以通过将焦点移动到空场来解决它,但这不是很好。
奇怪的是,此行为适用于Field
,BitmapField
,但不适用于ButtonField
。
看来,当ButtonField
聚焦时,外部点击不会生成按钮事件。
我尝试扩展ButtonField
,但我无法摆脱那个愚蠢的Button Background。
所以我的问题; 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)));
答案 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() {}