黑莓事件处理和焦点问题

时间:2011-06-14 20:12:43

标签: blackberry

我遇到了一个小型黑莓应用程序的问题,其中2个特定字段中有1个处理了触摸事件。

在我的情况下,我有2个图像,一个在顶部(屏幕上的第一个元素)和底部(最后一个元素添加到屏幕。两个都是BitmapField的子类。它们的目的是显示一个网站当用户点击(用触控板/球点击)时。

问题是当其中任何一个具有焦点时,无论用户在屏幕上的哪个位置(即在EditField,另一个自定义按钮或背景的一部分),具有焦点的BitmapField都会消耗事件调用网络浏览器。这显然只是BB Torch模拟器上的一个问题,我为BB OS 5.0构建。

我让BitmapField消耗导航点击和触摸事件。

此外,任何关于从哪里获得一个好的方向(如不是由RIM编写的)Blackberry API的事件处理指南都会有所帮助。

更新 我试过了:

    public boolean isFocusable() {
        return false;
    }

但是,理想情况下,我希望这可以在像Curve和Bold这样的设备上运行。

更新2: 布局管理器中有几个可以获得焦点的LabelField,但它们不会导致此问题,只有当BitmapField具有焦点时才会发生。

2 个答案:

答案 0 :(得分:3)

我建议通过Field的子类创建自定义图片按钮字段。覆盖paint(Graphics graphics)以绘制图像和聚焦边框(或背景)。然后只需覆盖navigationClick(int status, int time)。当用户在触摸屏上单击您的字段时,BB UI框架将调用该方法。它也适用于非触摸屏设备。这是一个很大的好处 - 你根本不需要打扰TouchEvent

答案 1 :(得分:1)

确保在touchEvent()上检查触摸的位置。如果它超出了BitmapField的范围,您应该返回super.touchEvent(message)。无论触摸在何处,当一个场具有焦点时,它首先被发送到它以确定它是否应该处理它。