19

Ok Sono molto confuso qui su come fare una finestra personalizzata correttamente utilizzando l'ultima appcompat v23.0.1 Ecco un paio di modimodo corretto di fare una finestra di dialogo materiale personalizzato con AppCompat 23+

primo modo :

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 ° modo:

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

Entrambi i modi sembrano produrre lo stesso risultato. Personalmente preferisco la 1a via, ma c'è un problema con l'effetto a catena in cui viene tagliato quando finisce il bordo della vista principale, come puoi vedere nella foto qui sotto.

ripple effect fail

Si tratta di un bug? (Deve essere!) Posso ripararlo o devo solo convertire in 2 modo? (Che funziona bene con l'effetto a catena). Qual è l'approccio migliore tra questi due modi considerando che la maggior parte delle biblioteche di materiali di testo stanno usando il primo modo?

EDIT: l'errore di ripple sul primo modo non sembra più verificarsi quindi non sono ancora sicuro di quale sia il modo giusto per quei due.

+1

Stai utilizzando le librerie di supporto compat dell'app e "AppCompatDialogFragment" ti dà il comportamento desiderato, quindi penso che tu abbia già risposto alla tua domanda. –

+0

Sì, penso che "AppCompatDialogFragment" funzioni come previsto, ma volevo solo sapere qual è l'approccio migliore per dialoghi come quello. La maggior parte delle biblioteche di materiali di testo usano la prima. Ecco perché ero piuttosto scettico, ma grazie per la tua risposta – ThanosFisherman

+0

Come aggiungere il pulsante positivo e negativo in AppCompatDialogFragment? –

risposta

11

Seconda approch sembra meglio come AppCompatDialogFragment estende DialogFragment e fa tutto il lavoro pesante per voi. Inoltre sembra più pulito con l'astrazione di dettagli non necessari (in linea con OOP).

dà anche effact desiderato;)

1

Il Secondo approccio è meglio come, perché è una versione speciale di DialogFragment che utilizza un AppCompatDialog al posto di un dialogo piattaforma di stile. AppCompatDialogFragment è la sottoclasse di DialogFragment e erediterà tutte le proprietà dello DialogFragment.