在Android中禁用轨迹球点击

时间:2010-08-06 12:59:29

标签: android trackball

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

有什么方法吗?

编辑:这是一个解决方案

//=====================================================================================
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();
}

3 个答案:

答案 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;。