È possibile impostare l'attributo "cliccabile" a "true" nel layout che contiene il ProgressBar:
<FrameLayout
android:id="@+id/progressBarContainer"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:clickable="true" >
<ProgressBar
android:id="@+id/progressBar"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center" />
</FrameLayout>
Poi, mentre la ProgressBar è visibile, il suo contenitore (che riempie l'intero schermo, anche se è invisibile) intercetterà qualsiasi evento di clic in modo che non cadano nel layout sottostante mentre la barra di avanzamento viene visualizzata.
Per utilizzare questa, fare questo quando si desidera visualizzare il ProgressBar:
findViewById(R.id.progressBarContainer).setVisibility(View.VISIBLE);
e poi fare questo quando hai finito con esso:
findViewById(R.id.progressBarContainer).setVisibility(View.INVISIBLE);
Per esempio, se si' usando questo in un AsyncTask, potresti renderlo visibile in onPreExecute(), quindi renderlo invisibile in onPostExecute().
Ho sempre impostato manualmente i miei pulsanti su isClickable (false) quando è attivo qualsiasi popup personalizzato. Ma sono interessato a sapere se c'è una soluzione più pulita. – Jonny07
Probabilmente è necessario disabilitare il layout sottostante mentre l'indicatore è attivo: http://stackoverflow.com/questions/12300796/android-how-to-disable-controls-during-progress-bar-is-active – JDJ
I believe I ci ho provato ma non ha funzionato. – Jonny07