19

Ok ich verwirrt bin wirklich hier zu machen, wie ein benutzerdefiniertes Dialog richtig die neuesten appcompat v23.0.1 hier mit machen, ist ein paar Möglichkeiten,korrekte Art und Weise ein eigenes Material Dialog mit AppCompat 23+

Erster Weg :

public class AddTipDialogFrag extends DialogFragment 
{ 
@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) 
    { 
     int title = getArguments().getInt("title"); 
     AppCompatDialog dialogCompat = new AppCompatDialog(getActivity(), R.style.MyAlertDialogStyle); 
     dialogCompat.setTitle(title); //doesn't work btw 
     dialogCompat.setContentView(R.layout.add_tip_fragment); 
     return dialogCompat; 
    } 
} 

2. Art und Weise:

public class AddTipDialogFrag extends AppCompatDialogFragment 
{ 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     View view = inflater.inflate(R.layout.add_tip_fragment,container, false); 
     int title = getArguments().getInt("title"); 
     getDialog().setTitle(title); 
     return view; 
    } 
} 

Beide Wege scheinen das gleiche Ergebnis zu erzielen. Persönlich bevorzuge ich den ersten Weg, aber es gibt ein Problem mit Welleneffekt, wo es abgeschnitten wird, wenn die Kantenansicht endet, wie Sie auf dem Bild unten sehen können.

ripple effect fail

Ist das ein Fehler? (Es muss sein!) Kann ich es reparieren oder sollte ich nur zum 2. Weg konvertieren? (Was gut mit dem Welleneffekt funktioniert). Was ist der beste Ansatz zwischen diesen beiden Möglichkeiten, wenn man bedenkt, dass die meisten Materialdialog-Bibliotheken den ersten Weg benutzen?

EDIT: die Welligkeit Glitch auf dem ersten Weg scheint nicht mehr auftreten, so dass ich immer noch nicht sicher bin, was der richtige Weg für diese beiden ist.

+1

Sie verwenden die app compat-Unterstützungsbibliotheken, und 'AppCompatDialogFragment' gibt Ihnen das gewünschte Verhalten, also denke ich, dass Sie bereits Ihre eigene Frage beantwortet haben. –

+0

Ja, ich denke, 'AppCompatDialogFragment' funktioniert wie erwartet, aber ich wollte nur wissen, was der beste Ansatz für solche Dialoge ist. Die meisten Materialdialogbibliotheken verwenden den ersten Weg. Deshalb war ich etwas skeptisch, aber danke für Ihre Antwort – ThanosFisherman

+0

Wie man positiven und negativen Knopf in AppCompatDialogFragment hinzufügt? –

Antwort

11

Zweit approch scheint besser als AppCompatDialogFragmentDialogFragment erweitert und macht die ganze schwere Arbeit für Sie. Außerdem sieht es sauberer aus mit unnötigen Details (inline mit OOP).

gibt auch gewünschte effact;)

1

Der Zweiter Ansatz ist besser als, weil es eine spezielle Version von DialogFragment ist, die eine AppCompatDialog anstelle einer Plattform-Stil Dialog verwendet. Die AppCompatDialogFragment ist die Unterklasse von DialogFragment und erbt alle Eigenschaften der DialogFragment.