我的应用中有一个列表。

当用户用手指触摸列表项目时,onListItemClick处理程序会开火,我打开了一项新活动。

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

不幸的是,在三星时刻进行测试时,单击触控板会启动OnListItemClick Handler,而不是OnTrackBallevent处理程序。

有人知道为什么吗?有人有办法解决吗?

有帮助吗?

解决方案

在listView中您可以setOnKeyListener,并且在keyCode为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;
                 }
              }
         }
});

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

其他提示

尝试覆盖 dispatchTrackball 事件并抓住那些活动。另外,只是一个建议 - 我不会在轨迹球上使用其他动作,因为并非所有的Android手机都有轨迹球。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top