Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
禁用Android中的轨迹球单击_Android_Trackball - Fatal编程技术网

禁用Android中的轨迹球单击

禁用Android中的轨迹球单击,android,trackball,Android,Trackball,我在实现自定义进度对话框时遇到了一些困难。即使覆盖层截获了触摸事件,用户仍然可以操作轨迹球并单击应该被禁用的元素 这有什么办法吗 编辑:这里有一个解决方案 //===================================================================================== protected void showProgressIndicator() { progressIndicator_.show(); } //=======

我在实现自定义进度对话框时遇到了一些困难。即使覆盖层截获了触摸事件,用户仍然可以操作轨迹球并单击应该被禁用的元素

这有什么办法吗

编辑:这里有一个解决方案

//=====================================================================================
protected void showProgressIndicator()
{
    progressIndicator_.show();
}

//=====================================================================================
@Override
public boolean onTrackballEvent(MotionEvent event)
{
    return progressIndicator_.getVisibility() == View.VISIBLE;
}

//=====================================================================================
protected void hideProgressIndicator()
{
    progressIndicator_.hide();
}
然后在显示方法

//=====================================================================================
public void show()
{
    setVisibility(VISIBLE);
    if (animationHandler_ != null)
        return;

    animationHandler_ = new Handler();
    animationHandler_.post(animateTask_);
    requestFocus();
}
检查方法。然后尝试在方法中直接返回true,而不在其中执行任何操作。这将立即终止事件。

覆盖OnTrackBalleEvent()不起作用。
尝试重写DispatchTrackBalleEvent(),在其中不执行任何操作,只返回true

为了防止轨迹球在活动显示在屏幕上时执行任何操作,请将以下代码添加到活动子类中

@Override 
public boolean dispatchTrackballEvent(android.view.MotionEvent ev) {
  return true;
};

我已经在Google Nexus One手机上测试过了,效果很好。

您的解决方案并不完全正确,因为用户无法以这种方式使用轨迹球导航,但他可以单击轨迹球。因此,如果一个按钮被聚焦,他仍然可以点击它。解决方案只是从progress对话框和implemento nTrackballEvent()请求foucs。感谢您的建议:)您能发布解决方案吗?我能使用此技术在emulator中关闭轨迹球吗?@MoJo它确实有效,因为它覆盖了偶数,并且不调用基类。返回true也很重要,因为它会告诉Android你吃了这个事件。