Отключить трекбол в Android - PullRequest
2 голосов
/ 06 августа 2010

Я столкнулся с некоторыми трудностями при реализации пользовательского диалога прогресса. Даже если наложение перехватывает события касания, пользователь все равно может использовать трекбол и щелкать элементы, которые должны быть отключены.

Есть ли способ обойти это?

Редактировать: вот решение

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

Ответы [ 3 ]

1 голос
/ 12 января 2012

Чтобы ваш трекбол ничего не делал, пока ваша активность отображается на экране, добавьте следующий код в ваш подкласс Activity.

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

Я проверил это на телефоне Google Nexus One, и он работаетхорошо.

0 голосов
/ 29 сентября 2011

Переопределение onTrackballEvent () не работает.Попробуйте переопределить dispatchTrackballEvent (), ничего не делать в нем, просто верните true;.

0 голосов
/ 06 августа 2010

Проверьте метод onTrackballEvent () . Затем попробуйте напрямую вернуть true в метод, ничего не делая в нем. Это должно сразу убить событие.

...