2

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

有没有办法解决?

编辑:这是一个解决方案

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

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

//=====================================================================================
protected void hideProgressIndicator()
{
    progressIndicator_.hide();
}

一个 then in show 方法

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

    animationHandler_ = new Handler();
    animationHandler_.post(animateTask_);
    requestFocus();
}
4

3 回答 3

1

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

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

我已经在 Google Nexus One 手机上进行了测试,它运行良好。

于 2012-01-12T12:22:43.000 回答
0

覆盖 onTrackballEvent() 不起作用。尝试覆盖 dispatchTrackballEvent(),什么都不做,只返回 true;。

于 2011-09-29T05:49:27.183 回答
0

检查onTrackballEvent()方法。然后尝试在方法中直接返回true而不做任何事情。这应该立即终止该事件。

于 2010-08-06T14:12:21.510 回答