在Android中禁用轨迹球点击
我遇到了一些实现自定义进度对话框的困难。即使叠加层截取触摸事件,用户仍然可以操作轨迹球并单击应该禁用的元素。在Android中禁用轨迹球点击
有没有办法解决这个问题?
编辑:这里是一个解决方案
//=====================================================================================
protected void showProgressIndicator()
{
progressIndicator_.show();
}
//=====================================================================================
@Override
public boolean onTrackballEvent(MotionEvent event)
{
return progressIndicator_.getVisibility() == View.VISIBLE;
}
//=====================================================================================
protected void hideProgressIndicator()
{
progressIndicator_.hide();
}
的再show方法
//=====================================================================================
public void show()
{
setVisibility(VISIBLE);
if (animationHandler_ != null)
return;
animationHandler_ = new Handler();
animationHandler_.post(animateTask_);
requestFocus();
}
重写onTrackballEvent()不起作用。 尝试覆盖dispatchTrackballEvent(),不做任何事情只是返回true ;.
为了防止您的轨迹球在您的活动出现在屏幕上时执行任何操作,请将以下代码添加到您的活动子类中。
@Override
public boolean dispatchTrackballEvent(android.view.MotionEvent ev) {
return true;
};
我已经在谷歌Nexus One手机上测试过它,它工作正常。
我可以使用这种技术关闭模拟器中的轨迹球吗? – 2012-09-27 07:15:50
@MoJo它可以工作,因为它重写了even并且不会调用基类。回归真实也很重要,因为它会告诉Android你吃了这个事件。 – ForceMagic 2014-05-21 17:37:37
您的解决方案并不完全正确,因为用户无法以跟踪球的方式导航,但他可以点击它。所以如果一个按钮集中,他仍然可以点击它。解决方案只是从进度对话框中请求foucs并执行nTrackballEvent()。感谢您的咨询:) – 2010-08-06 16:17:07
可以请你发布解决方案? – Pria 2010-08-27 06:14:45
你有可能发布通用代码吗? – 2011-02-08 14:24:38