我在实现自定义进度对话框时遇到了一些困难。即使覆盖截取触摸事件,用户仍然可以操作轨迹球并单击应该禁用的元素。
有什么方法吗?
编辑:这是一个解决方案
//=====================================================================================
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();
}
答案 0 :(得分:1)
为了防止您的轨迹球在屏幕上活动时做任何事情,请将以下代码添加到您的Activity子类中。
@Override
public boolean dispatchTrackballEvent(android.view.MotionEvent ev) {
return true;
};
我已经在Google Nexus One手机上测试了它,它运行正常。
答案 1 :(得分:0)
检查onTrackballEvent()方法。然后尝试直接在方法中返回true而不在其中执行任何操作。这应该立即杀死这个事件。
答案 2 :(得分:0)
覆盖onTrackballEvent()不起作用。 尝试重写dispatchTrackballEvent(),不做任何事情只返回true;。