onTrackballEvent 未在 Samsung Moment 上触发

发布于 2024-10-02 05:57:29 字数 294 浏览 2 评论 0原文

我的应用程序中有一个列表。

当用户用手指触摸列表项时, onListItemClick 处理程序会触发,我让它打开一个新的 Activity。

但是,当用户使用轨迹球/板单击时,我想执行一些不同的功能。我已经覆盖了 onTrackballEvent,并且在模拟器的轨迹球模式下一切都工作得很好。

不幸的是,在 Samsung Moment 上进行测试时,单击触控板会触发 onListItemClick 处理程序,而不是 onTrackballEvent 处理程序。

有谁知道为什么?有人有办法解决这个问题吗?

I have a list in my app.

When a user touches a list item with their finger, the onListItemClick handler fires and I have it opening a new Activity.

However, when a user uses the trackball/pad to click, I want to perform some different functionality. I've overrode onTrackballEvent and everything works perfectly fine in the emulator's trackball mode.

Unfortunately, when testing on the Samsung Moment, clicking the trackpad fires the onListItemClick handler, not the onTrackballEvent handler.

Does anyone know why? Does anyone have a way around this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

送舟行 2024-10-09 05:57:29

在列表视图中,您可以 setOnKeyListener 并在键码为 KeyEvent.KEYCODE_DPAD_CENTER 时进行编码,

listview.setOnKeyListener(new OnKeyListener() {

            public boolean onKey(View v, int keyCode, KeyEvent event) {
               switch(keyCode){
                 case KeyEvent.KEYCODE_DPAD_CENTER:
                    if(event.getAction()==KeyEvent.ACTION_UP){ //to do it only when key is released 
                   // do the code while trackball/pad is clicked
                    }
                   return true;
                 default:
                    return false;
                 }
              }
         }
});

这对我有用。希望这会给你一些想法

In listview you can setOnKeyListener and do you code when keycode is KeyEvent.KEYCODE_DPAD_CENTER

listview.setOnKeyListener(new OnKeyListener() {

            public boolean onKey(View v, int keyCode, KeyEvent event) {
               switch(keyCode){
                 case KeyEvent.KEYCODE_DPAD_CENTER:
                    if(event.getAction()==KeyEvent.ACTION_UP){ //to do it only when key is released 
                   // do the code while trackball/pad is clicked
                    }
                   return true;
                 default:
                    return false;
                 }
              }
         }
});

It work for me. Hope this will give you some idea

×纯※雪 2024-10-09 05:57:29

尝试覆盖 dispatchTrackball 事件并获取这些事件。另外,只是一个建议 - 我不会在轨迹球上使用不同的操作,因为并非所有 Android 手机都有轨迹球。

Try overriding the dispatchTrackball event and grab those events. Also, just a suggestion - I would not use a different action on the trackball because not all Android phones have the trackball.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文