Pergunta

Eu tive algumas dificuldades na implementação de uma caixa de diálogo de progresso personalizada. Embora uma sobreposição intercepta eventos de toque, o usuário ainda pode operar os elementos Trackball e Click que deveriam ser desativados.

Existe alguma maneira de contornar isso?

Editar: aqui está uma solução

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

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

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

Um método então no show

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

    animationHandler_ = new Handler();
    animationHandler_.post(animateTask_);
    requestFocus();
}
Foi útil?

Solução

Verifica a ontrackballevent () método. Em seguida, tente retornar diretamente true no método sem fazer nada nele. Isso deve matar o evento imediatamente.

Outras dicas

Para impedir que seu trackball faça qualquer coisa enquanto sua atividade estiver na tela, adicione o código a seguir à sua subclasse de atividade.

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

Eu testei isso em um telefone do Google Nexus One e funciona bem.

Substituir ontrackballevent () não funciona. Tente sobreviver DispatchTrackBallevent (), não faça nada nele, apenas retorne verdadeiro;.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top