2013-08-29 10 views
12

Die Android-Design-Dokumentation in http://developer.android.com/design/building-blocks/dialogs.html macht eine klare Unterscheidung zwischen Dialoge, Alerts, Popups und Toasts. Es empfiehlt auch die Implementierung von Dialoge mittels der DialogFragment Klasse und Toasten mittels der Toast Klasse. Allerdings ist mir nicht klar, ob Popups mit PopupWindow oder mit DialogFragment implementiert werden sollen.Dialoge und Popups in Android

Ich weiß, dass DialogFragments kommen in der Regel mit Ok/Abbrechen Buttons und dass die Lage der PopupWindows definiert werden können, aber:

+0

Ok zeigen wollen, nach [dialogs.html] (http : //developer.android.com/guide/topics/ui/dialogs.html), empfehlen sie die Verwendung von 'DialogFragment' auch für Windows wie [list_dialog] (http://developer.android.com/images) /ui/dialog_list.png), die keine Schaltflächen haben. Außerdem denke ich, dass die Tatsache, dass es auf 'Fragmenten' basiert, die Ergänzung des BackStacks erleichtert, während mir nicht klar ist, wie ich das mit einem' PopupWindow' machen würde. Daher wähle ich den 'DialogFragment'-Ansatz, obwohl ich noch einige tiefere Details zum Vergleich beider Klassen zu schätzen wüsste. – leo9r

Antwort

2

Wenn Sie Dialog wollen wie in der Verbindung gezeigt, machen sie nur durch individuellen Dialog machen, wie unten erwähnt:

Machen Sie ein Dialog-Objekt:

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

Set benutzerdefinierte Ansicht zu diesem Dialog :

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

Ihr individuelles Layout so sein sollte:

<?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> 

Jetzt Satz alpha für Ihre erste relative Layout in Show_Dialog() wie folgt aus:

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); 
} 

Anruf show_dialog() wo Sie Dialog mit diesen