2013-06-04 18 views
15

Vorrei impostare il tema di progressDialog. Per crearla, io uso questo codice:Come impostare il tema su ProgressDialog?

progressDialog = ProgressDialog.show(this, "Please Wait", "Loading dictionary file....", true, false); 

non posso solo scrivere

progressDialog = new ProgressDialog(...); 
progressDialog.(do_sth_with_dialog); 
progressDialog.show(...) 

perché il metodo show() è statico e ottengo avviso del compilatore. C'è un modo per utilizzare le costanti disponibili, come

progressDialog.THEME_HOLO_DARK 

per impostare il tema di dialogo?

Vorrei anche cambiare lo sfondo della finestra di dialogo e arrotondare gli angoli (non voglio modificare nulla con la barra di avanzamento che si trova in progressDialog. Ci sono molti tutorial qui, ma in genere descrivono come creare una nuova classe che estende la classe progressDialog.

c'è modo più semplice per impostare a tema e il colore di sfondo di progressDialog?
Perché è possibile accedere alle costanti come progressDialog.THEME_HOLO_DARK se li cant utilizzare?

+0

Non si può gonfiare il progresso di dialogo dell'interfaccia utente, che cosa si può fare è mentre si fa Async Task, è possibile mostrare personalizzato dialogo – Adil

+0

Adil Mughal la prego di scrivere nella risposta come posso fare customProgressDialog con un solo tema di fondo e ANGOLI modificata? Non voglio toccare ProgressBar ... – Marek

+0

@Marek: non puoi aumentare il layout della finestra di dialogo Progress (menzionato sopra da Adil Mughal) devi utilizzare la finestra di dialogo personalizzata (non la finestra di dialogo personalizzata). puoi creare una semplice finestra di dialogo e personalizzarla in base alle tue esigenze. –

risposta

28

ProgressDialog.show() sono metodi statici, in modo da non si ottiene un'istanza di classe di ProgressDialog che è possibile impostare le proprietà su.

Per ottenere un'istanza ProgressDialog:

// create a ProgressDialog instance, with a specified theme:  
ProgressDialog dialog = new ProgressDialog(mContext, ProgressDialog.THEME_HOLO_DARK); 
// set indeterminate style 
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
// set title and message 
dialog.setTitle("Please wait"); 
dialog.setMessage("Loading dictionary file..."); 
// and show it 
dialog.show(); 

EDIT 8/2016: Per quanto riguarda i commenti su temi deprecate, si può anche usare styles.xml e ereditare da un tema di base, ad esempio:

<style name="MyProgressDialog" parent="Theme.AppCompat.Dialog"> 
</style> 

i dettagli su come fare questo sono già ampiamente trattati altrove, iniziare con https://developer.android.com/guide/topics/ui/themes.html.

L'uso di temi e styles.xml è (a mio avviso) una soluzione molto più pulita e più facile da mantenere rispetto a codificare un tema durante l'istanziazione di ProgressDialog, vale a dire impostarlo una volta e dimenticarlo.

Poi si può solo fare

new ProgressDialog(mContext); 

e lasciate che il vostro tema/stile globale forniscono lo stile.

+2

Il tema è ora deprecato. Cos'altro possiamo usare? – user2520215

+0

^Stessa domanda. Non ho trovato nulla nei documenti –

0

non si può gonfiare progressDialog.

Ciò che si può fare mentre si esegue un'attività asincrona, è possibile visualizzare una finestra di dialogo personalizzata che è possibile creare ereditando dalla classe Dialog.

vedere anche how to set background image for progress dialog?

0
dialog = new Dialog(this); 
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
dialog.setContentView(R.layout.item_dialog); 
11

Siamo spiacenti .. Sto lavorando proprio ora. Non posso dare tutti i dettagli Ma ecco la risposta.

ProgressDialog progressDialog; 

if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB){ 
    progressDialog = new ProgressDialog(new ContextThemeWrapper(context, android.R.style.Theme_Holo_Light_Dialog)); 
}else{ 
    progressDialog = new ProgressDialog(context); 
} 

progressDialog.setMessage("Loading...."); 
progressDialog.show(); 
+0

non funziona per me –

+0

Grazie per ContextThemeWrapper :) –

+0

non funziona neanche per me – Mike6679