2013-08-29 23 views
12

La documentazione di progettazione Android in http://developer.android.com/design/building-blocks/dialogs.html differenzia chiaramente tra finestre di dialogo, avvisi, popup e toast. Si consiglia inoltre l'implementazione delle finestre di dialogo tramite la classe DialogFragment e Toast tramite la classe Toast. Tuttavia non è chiaro a me se Popups debba essere implementato con PopupWindow o con DialogFragment.Finestre di dialogo e popup in Android

so che DialogFragments solito sono dotati di pulsanti OK/Annulla e che la posizione del PopupWindows può essere definita, ma:

+0

Ok, secondo [dialogs.html] (http : //developer.android.com/guide/topics/ui/dialogs.html), raccomandano l'uso di 'DialogFragment'even per windows come [list_dialog] (http://developer.android.com/images /ui/dialog_list.png) che non ha pulsanti. Inoltre, immagino che il fatto di essere basato su 'Fragments' faciliti l'aggiunta a BackStack, mentre non sono chiaro come lo farei con' PopupWindow'. Pertanto, sto andando per l'approccio 'DialogFragment', anche se apprezzerei ancora alcuni dettagli più approfonditi sul confronto di entrambe le classi. – leo9r

risposta

2

Se si vuole dialogo, come mostrato nel link, basta fare facendo dialogo personalizzato come indicato di seguito:

Fai un oggetto finestra di dialogo:

Dialog dialog = new Dialog(context,android.R.style.Theme_Translucent_NoTitleBar); 

Set visualizzazione personalizzata a questa finestra di dialogo :

show_dialog(){ 
    dialog.setContentView(R.layout.custom_dialog);//your custom dialog layout. 
} 

il layout personalizzato dovrebbe essere simile a questo:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:id="@+id/custom_dialog_first_rl" 
    android:background="@android:color/black"> 
<!-- write code for rest of your UI here --> 
</RelativeLayout> 

alpha ora fissato per il primo layout relativo a show_dialog() in questo modo:

show_dialog(){ 
    dialog.setContentView(R.layout.custom_dialog);//your custom dialog layout. 
    RelativeLayout custom_dialog_first_rl=(RelativeLayout)dialog.findViewById(R.id.custom_dialog_first_rl); 
     custom_dialog_first_rl.getBackground().setAlpha(170); 
} 

chiamata show_dialog() dove vuoi mostrare questa finestra

Problemi correlati