Comment définir le titre de DialogFragment?

Cela devrait être une tâche simple, mais pour une raison quelconque, je peux trouver un moyen de définir le titre d’un DialogFragment . (Je configure le contenu de la boîte de dialog à l’aide de la surcharge onCreateView ).

Le style par défaut laisse une place au titre, mais je ne trouve aucune méthode sur la classe DialogFragment pour la définir.

Le titre est défini comme par magie lorsque la méthode onCreateDialog est utilisée pour définir le contenu. Je me demande donc si c’est par conception ou s’il existe une astuce spéciale pour la définir lors de l’utilisation de la surcharge onCreateView .

Vous pouvez utiliser getDialog().setTitle("My Dialog Title")

Juste comme ça:

 public static class MyDialogFragment extends DialogFragment { ... @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Set title for this dialog getDialog().setTitle("My Dialog Title"); View v = inflater.inflate(R.layout.mydialog, container, false); // ... return v; } // ... } 

Le onCreateDialog et la définition du titre directement sur le Dialog fonctionnent-ils? Comme ça:

 @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dialog = super.onCreateDialog(savedInstanceState); dialog.setTitle("My Title"); return dialog; } 

La réponse de Jason a fonctionné pour moi, mais maintenant il a besoin des ajouts suivants pour que le titre soit visible.

Tout d’abord, dans la méthode onCreate() de onCreate() , ajoutez:

setStyle(DialogFragment.STYLE_NORMAL, R.style.MyDialogFragmentStyle);

Ensuite, dans votre fichier styles.xml, ajoutez:

  

Après des heures à essayer différentes choses, c’est le seul qui a fait l’affaire pour moi.

NB – Vous devrez peut-être modifier le Theme.AppCompat.Light.Dialog.Alert pour qu’il corresponde au style de votre thème.

Vous pouvez consulter les documents officiels . La façon dont j’ai fait est comme ceci:

 @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()) .setTitle("My Title"); LayoutInflater inflater = getActivity().getLayoutInflater(); View view = inflater.inflate(R.layout.my_layout, null); builder.setView(view); return builder.create(); } 

DialogFragment peut être représenté comme un dialog et comme une activité. Utilisez le code ci-dessous qui fonctionnerait correctement pour les deux

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (getShowsDialog()) { getDialog().setTitle(marketName); } else { getActivity().setTitle(marketName); } }