Textview: использование стиля заголовка диалога: @android: style / TextAppearance.DialogWindowTitle

В настоящее время я пытаюсь создать собственную тему DialogFragment.

Одно из моих требований – использовать значок справа от названия.

Первая идея

Просто используя:

this.getDialog().getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.dialog_title); 

Но, к сожалению, эта строка кода не имеет результата.

Вторая идея

Подделка моего собственного макета -this.setContentView () – с помощью этого текстового представления:

 <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" /> 

Это работает, потому что я могу читать текст, но он все еще написан черным шрифтом по умолчанию.

Я ожидал TextAppearance.DialogWindowTitle, чтобы дать моему тексту заголовок (синий в Holo с большим размером шрифта)

Любая идея или предложение?

РЕДАКТИРОВАТЬ

Это почти трюк:

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

Но android: drawableRight просто сломал макет названия:

Введите описание изображения здесь

ВТОРОЙ РЕДАКТИРОВАНИЕ

Это немного лучше:

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

Введите описание изображения здесь

Solutions Collecting From Web of "Textview: использование стиля заголовка диалога: @android: style / TextAppearance.DialogWindowTitle"

Возможно, вы можете расширить стиль по умолчанию таким образом:

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> 

И переопределите в диалоговом onCreate :

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NORMAL, R.style.Dialog); } 

Рабочий пример

Я ищу свое первое требование. Но для второго требования, почему вы не пытаетесь изменить цвет в стиле TextAppearance.DialogWindowTitle с вашим пользовательским стилем?

Я просто проверяю ресурсы Android, где есть стиль, как показано ниже:

  <style name="DialogWindowTitle"> <item name="android:maxLines">1</item> <item name="android:scrollHorizontally">true</item> <item name="android:textAppearance">@style/TextAppearance.DialogWindowTitle</item> </style> 

И для TextAppearance.DialogWindowTitle style:

  <style name="TextAppearance.DialogWindowTitle"> <item name="android:textSize">18sp</item> <item name="android:textStyle">normal</item> <item name="android:textColor">?textColorPrimary</item> </style> 

Теперь вы можете изменить цвет своего стиля TextAppearance.DialogWindowTitle и сделать то, что вам нужно.

Надеюсь, вы поняли.

Не стесняйтесь комментировать.

Вы пытались использовать @android:style/Theme.Holo.Light.Dialog как ваш parent в стилях? Это будет работать только в Android 3+, потому что в более ранней версии нет темы Holo, но вы можете создать свой собственный, чтобы выглядеть как для более низких версий Android.