禁用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你吃了这个事件。