19

OK Jestem naprawdę mylić tutaj na jak zrobić własny dialog właściwie wykorzystaniem najnowszych AppCompat v23.0.1 Oto kilka sposobówPrawidłowy sposób, aby okno niestandardowy materiał z AppCompat 23+

Pierwszy sposób :

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 sposób:

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

Oba sposoby wydają się produkować ten sam rezultat. Osobiście wolę pierwszą opcję, jednak istnieje problem z efektem marszczyć, kiedy zostanie wycięty, gdy kończy się obramowanie widoku custem, jak widać na poniższym obrazku.

ripple effect fail

Czy to błąd? (To musi być!) Czy mogę to naprawić, czy powinienem po prostu przekonwertować na drugą stronę? (Co działa dobrze z efektem marszczenia). Jakie jest najlepsze podejście między tymi dwoma sposobami, biorąc pod uwagę, że większość bibliotek materiałów dialogowych wykorzystuje pierwszy sposób?

EDYCJA: usterka marszczenia na pierwszy sposób wydaje się już nie występować, więc nadal nie jestem pewien, który jest właściwy sposób tych dwóch.

+1

Używasz bibliotek wsparcia aplikacji i 'AppCompatDialogFragment' zapewnia pożądane zachowanie, więc myślę, że już odpowiedziałeś na własne pytanie. –

+0

Tak, domyślam się, że 'AppCompatDialogFragment' działa zgodnie z oczekiwaniami, ale chciałem tylko wiedzieć, jakie jest najlepsze podejście do takich okien dialogowych. Większość bibliotek materiałów dialogowych wykorzystuje pierwszy sposób. Dlatego byłem trochę sceptyczny, ale dzięki za odpowiedź – ThanosFisherman

+0

Jak dodać pozytywny i negatywny przycisk w AppCompatDialogFragment? –

Odpowiedz

11

drugie approch Wygląda lepiej jak AppCompatDialogFragment rozciąga DialogFragment i nie wszystkie podnoszenia ciężkich dla Ciebie. Wygląda też czysto z abstrakcją niepotrzebnych szczegółów (zgodnie z OOP).

także daje pożądany effact;)

1

Drugie podejście jest lepiej jak ponieważ jest to specjalna wersja DialogFragment który wykorzystuje AppCompatDialog zamiast okna platformy stylu. The AppCompatDialogFragment jest podklasą DialogFragment i będzie dziedziczyć wszystkie właściwości DialogFragment.