我目前正在尝试构建自己的DialogFragment主题。
我的一个要求是使用标题右侧的图标。
第一个想法
只需使用:
this.getDialog().getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.dialog_title);
但不幸的是,这行代码没有结果。
第二个想法
使用此textview:
来发布我自己的布局-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>
答案 0 :(得分:18)
也许您可以这种方式扩展默认样式:
的 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);
}
<强> Working Example 强>
答案 1 :(得分:1)
我正在寻找你的第一个要求。但是对于第二个要求,为什么不尝试将颜色更改为 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样式的颜色,并根据需要进行操作。
希望你明白这一点。
随意发表评论。
答案 2 :(得分:0)
您是否尝试在样式中使用@android:style/Theme.Holo.Light.Dialog
作为parent
?这仅适用于Android 3+,因为在早期版本中没有主题Holo,但您可以为较低版本的Android创建自己的主题。