J'essaie actuellement de créer mon propre thème DialogFragment.
L'une de mes exigences est d'utiliser une icône à droite du titre.
Première idée
En utilisant simplement:
this.getDialog().getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.dialog_title);
Mais malheureusement, cette ligne de code n'a aucun résultat.
Deuxième idée
Prouver ma propre mise en page -ce.setContentView () - avec cette vue de texte:
<TextView
Android:id="@+id/tvTitle"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="From XML"
Android:textAppearance="@Android:style/TextAppearance.DialogWindowTitle" />
Cela fonctionne, car je peux lire le texte, mais il est toujours écrit en police noire par défaut.
Je m'attendais à ce que TextAppearance.DialogWindowTitle donne à mon texte une apparence de titre (bleu dans Holo avec une grande taille de police)
Une idée ou une suggestion?
MODIFIER
Cela a presque fait l'affaire:
<style name="Dialog" parent="@Android:style/Theme.Dialog">
<item name="Android:windowTitleStyle">@style/MyOwnDialogTitle</item>
</style>
<style name="MyOwnDialogTitle">
<item name="Android:drawableRight">@drawable/MyRightImage</item>
</style>
mais Android: drawableRight vient de casser la mise en page du titre:
DEUXIÈME MODIFICATION
C'est un peu mieux:
<style name="Dialog" parent="@Android:style/Theme.Dialog">
<item name="Android:windowTitleStyle">@style/MyOwnDialogTitle</item>
</style>
<style name="MyOwnDialogTitle">
<item name="Android:textAppearance">@Android:style/TextAppearance.DialogWindowTitle</item>
<item name="Android:drawableRight">@drawable/icon</item>
</style>
Vous pouvez peut-être étendre le style par défaut de cette manière:
res/values/dialogstyles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:Android="http://schemas.Android.com/apk/res/Android">
<style name="Dialog" parent="@Android:style/Theme.Dialog">
<item name="Android:windowTitleStyle">@style/MyOwnDialogTitle</item>
</style>
<style name="MyOwnDialogTitle">
<item name="Android:drawableRight">@drawable/MyRightImage</item>
</style>
</resources>
res/values-v11/dialogstyles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:Android="http://schemas.Android.com/apk/res/Android">
<style name="Dialog" parent="@Android:style/Theme.Holo.Dialog">
<item name="Android:windowTitleStyle">@style/MyOwnDialogTitle</item>
</style>
</resources>
Et remplacez le onCreate
de votre DialogFragment:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NORMAL, R.style.Dialog);
}
Je recherche votre premier besoin. mais pour la deuxième exigence, pourquoi ne pas essayer de changer la couleur en style de TextAppearance.DialogWindowTitle avec votre style personnalisé?
Je viens de vérifier les ressources Android où il y a du style comme ci-dessous:
<style name="DialogWindowTitle">
<item name="Android:maxLines">1</item>
<item name="Android:scrollHorizontally">true</item>
<item name="Android:textAppearance">@style/TextAppearance.DialogWindowTitle</item>
</style>
et pour le style TextAppearance.DialogWindowTitle:
<style name="TextAppearance.DialogWindowTitle">
<item name="Android:textSize">18sp</item>
<item name="Android:textStyle">normal</item>
<item name="Android:textColor">?textColorPrimary</item>
</style>
Maintenant, vous pouvez changer la couleur de votre style TextAppearance.DialogWindowTitle et faire ce que vous voulez.
J'espère que vous avez compris.
N'hésitez pas à commenter.
Avez-vous essayé d'utiliser @Android:style/Theme.Holo.Light.Dialog
comme votre parent
dans les styles? Cela ne fonctionnera que dans Android 3+ car dans la version précédente, il n'y a pas de thème Holo, mais vous pouvez créer le vôtre pour lui ressembler pour les versions inférieures d'Android.