我通过在styles.xml
中定义主题来自定义我的Android应用。我想将基本文本颜色应用于我的应用程序的所有文本,但我希望将AlertDialog
的外观保持为默认值(Holo.Light)。
styles.xml
<resources>
<style name="AppTheme" parent="android:Theme.Holo.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:textColor">@android:color/holo_red_dark</item>
<item name="android:alertDialogTheme">@style/AlertDialogStyle</item>
</style>
<style name="AlertDialogStyle" parent="@android:style/Theme.Holo.Light.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowTitleStyle">@style/DialogWindowTitle</item>
</style>
<style name="DialogWindowTitle">
<item name="android:maxLines">1</item>
<item name="android:scrollHorizontally">true</item>
<item name="android:textAppearance">@style/DialogWindowTitleAppearance</item>
</style>
<style name="DialogWindowTitleAppearance" parent="@android:style/TextAppearance.Holo.DialogWindowTitle">
<item name="android:textColor">@android:color/holo_purple</item>
</style>
</resources>
但是,AppTheme
中定义的颜色会覆盖紫色:
如果我删除<item name="android:textColor">@android:color/holo_red_dark</item>
中的行AppTheme
,则标题的文字颜色会正确更改。
所以我的问题是:如何为我的应用主题定义文字颜色,同时为对话标题文字设置另一种颜色(或保留系统默认颜色)?
答案 0 :(得分:1)
定义
<item name="android:textAppearanceLarge">...</item>
在AlertDialogStyle中
答案 1 :(得分:0)
为您的活动设置另一个样式
<activity
android:name="com.my.sample.Activity"
android:theme="@android:style/Theme.Holo.Light.Dialog"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/my_activity_name">
</activity>
答案 2 :(得分:0)
深入研究您想要更改的特定文本。它不工作的事实看起来像是一个错误。如果您需要内置警报对话框窗口而不是自定义主题窗口,则可以在构建警报框时使用此功能:
AlertDialog.Builder(Context context, int theme)
“主题”可以是AlertDialog.ThemeTraditional或其他一些AlertDialog主题常量。我想你现在已经开始了,可能会自己制作一个警告对话框来替换它,但上面的内容对我来说是一个充分的解决方法(我在浅灰色背景上有白色文字,所以我必须做点什么)。