Blackberry 黑莓点击外场
我正在为支持触摸的设备(950095509800,…)实现一个自定义图像按钮 我有一个问题,单击(触摸)字段外部会在聚焦字段中生成事件。(扩展Blackberry 黑莓点击外场,blackberry,imagebutton,Blackberry,Imagebutton,我正在为支持触摸的设备(950095509800,…)实现一个自定义图像按钮 我有一个问题,单击(触摸)字段外部会在聚焦字段中生成事件。(扩展字段时,位图字段时) 我可以通过将焦点移到空字段来解决这个问题,但这不是很好。 奇怪的是,这种行为适用于字段,位图字段,但不适用于按钮字段。 当ButtonField聚焦时,外部点击似乎不会生成按钮事件 我试图扩展按钮字段,但我无法摆脱那个愚蠢的按钮背景 所以我的问题,;字段和按钮字段之间的行为差异是什么,导致在字段之外生成事件 以下是我删除按钮背景的方式
字段时,位图字段时
)
我可以通过将焦点移到空字段来解决这个问题,但这不是很好。
奇怪的是,这种行为适用于字段
,位图字段
,但不适用于按钮字段
。
当ButtonField
聚焦时,外部点击似乎不会生成按钮事件
我试图扩展按钮字段
,但我无法摆脱那个愚蠢的按钮背景
所以我的问题,;字段
和按钮字段
之间的行为差异是什么,导致在字段
之外生成事件
以下是我删除按钮背景的方式:
// cahange button border
setBorder(BorderFactory
.createSimpleBorder(new XYEdges(0, 0, 0, 0)));
setBorder(VISUAL_STATE_ACTIVE, BorderFactory
.createSimpleBorder(new XYEdges(0, 0, 0, 0)));
您只需要在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
}
受保护的布尔touchEvent(touchEvent消息){
//确保触碰在我们场地的范围内
if(message.getX(1)<0 | | message.getX(1)>getWidth()| | | message.getY(1)<0 | | message.getY(1)>getHeight()){
返回false;
}
//做你的工作
}
触摸事件被发送到聚焦字段,即使它实际上不在字段上,您也必须返回false,以便包含该事件的管理器知道将其发送到下一个将接受它的字段(触摸打开的字段,或者如果它在空白处,则不发送)
编辑:
要删除按钮背景,请覆盖受保护的void applyTheme(){}
是的,我知道此检查,但我的问题是有什么区别,以及为什么ButtonField只接受内部单击?顺便说一句,在此期间,我想出了如何摆脱按钮背景,所以现在buttonfield非常适合me@Janci你能分享一下你是如何获得按钮背景的吗?@TechnodHr我已经更新了我的答案,展示了如何移除按钮装饰