1

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

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

但是,当用户使用轨迹球/键盘单击时,我想执行一些不同的功能。我已经覆盖了 onTrackballEvent 并且在模拟器的轨迹球模式下一切正常。

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

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

4

2 回答 2

1

在列表视图中,您可以 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;
                 }
              }
         }
});

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

于 2010-11-23T08:47:01.723 回答
-1

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

于 2010-11-21T07:03:55.583 回答