Comment puis-je personnaliser la mise en page d'en-tête d'une boîte de dialogue
-
20-09-2019 - |
Question
Dans Android, il est possible de personnaliser la mise en page d'en-tête (l'icône + un texte) mise en page d'un dialogue? Ou puis-je mettre juste une valeur de chaîne personnalisée du texte du titre?
Merci.
La solution
Il est possible de changer l'en-tête de la boîte de dialogue si vous définissez une mise en page personnalisée pour les deux la boîte de dialogue et l'en-tête. Je ne l'ai jamais utilisé cette méthode pour supprimer l'en-tête entièrement, mais cela devrait fonctionner pour un en-tête personnalisé:
dialog = new Dialog(context);
Window window = dialog.getWindow();
window.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
dialog.setContentView(R.layout.my_dialog_layout);
window.setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_custom_header);
Tout cela est un peu plus compliqué (comme vous devez configurer la mise en page de la boîte de dialogue aussi bien), mais il est plus facile que le sous-classement de dialogue.
Autres conseils
la classe de dialogue d'origine semble ne pas avoir la possibilité de définir une icône, mais vous pouvez facilement étendre AlertDialog et définir une vue personnalisée (le même que vous utilisez pour votre instance de dialogue), vous avez juste besoin de quelque chose comme ça
class MyDialog extends AlertDialog {
public MyDialog(Context ctx) {
super(ctx);
LayoutInflater factory = LayoutInflater.from(context);
View view = factory.inflate(R.layout.dialog_layout, null);
setView(view);
setTitle("MyTitle");
setIcon(R.drawable.myicon);
}
}