Textview:使用对话框标题样式:@android:style / TextAppearance.DialogWindowTitle

我目前正在尝试build立我自己的DialogFragment主题。

我的要求之一是使用标题右侧的图标。

第一个想法

只需使用:

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

但不幸的是,这行代码没有结果。

第二个想法

省去我自己的布局-this.setContentView() – 用这个textview:

 <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给我的文本一个标题的同意(蓝色在全息字体大字体)

任何想法或build议?

编辑

这几乎成功了:

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

并覆盖你的DialogFragment的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 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主题,但是您可以创build自己的Android版本。