web-dev-qa-db-fra.com

TextView: en utilisant le style de titre de la boîte de dialogue: @Android: style / TextAppearance.DialogWindowTitle

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:

enter image description here

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>

enter image description here

19
Waza_Be

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

Exemple de travail

18
Sherif elKhatib

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.

1
Shreyash Mahajan

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.

0
h4rd4r7c0r3