Domanda

ho incontrato qualche difficoltà con l'attuazione di una finestra di dialogo di avanzamento personalizzato. Anche se un overlay intercetta toccano eventi l'utente può comunque utilizzare la trackball e fare clic su elementi che dovrebbero essere disabilitata.

C'è un modo per aggirare questo?

Edit: ecco una soluzione

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

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

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

Un poi nel metodo show

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

    animationHandler_ = new Handler();
    animationHandler_.post(animateTask_);
    requestFocus();
}
È stato utile?

Soluzione

onTrackballEvent () metodo . Quindi provare a tornare direttamente vero nel metodo senza fare nulla in esso. Questo dovrebbe uccidere l'evento subito.

Altri suggerimenti

Al fine di evitare che il trackball di fare qualsiasi cosa, mentre la vostra attività è sullo schermo, aggiungere il seguente codice per la sottoclasse di attività.

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

Ho provato questo su un Google Nexus One telefono e funziona bene.

Override onTrackballEvent () non funziona. Prova sovrascrivendo dispatchTrackballEvent (), non fare nulla in essa solo return true;.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top