【问题标题】:Android theme text color conflicts with alert dialog title colorAndroid 主题文本颜色与警报对话框标题颜色冲突
【发布时间】:2014-08-05 07:36:14
【问题描述】:

我正在通过在styles.xml 中定义主题来自定义我的安卓应用程序。我想为我的应用程序的所有文本应用基本文本颜色,但我想将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 中定义的颜色会覆盖紫色:

如果我删除AppTheme 中的&lt;item name="android:textColor"&gt;@android:color/holo_red_dark&lt;/item&gt; 行,标题的文本颜色会正确更改。

所以我的问题是:如何为我的应用主题定义文本颜色,同时为对话框标题文本设置另一种颜色(或保留系统默认颜色)?

【问题讨论】:

    标签: android android-alertdialog android-theme


    【解决方案1】:

    定义

    <item name="android:textAppearanceLarge">...</item>
    

    在您的 AlertDialogStyle 中

    【讨论】:

    • 非常感谢,这有帮助,我只指定了 windowTitleStyle 和颜色,如果没有 android:textAppearanceLarge 也无法使用
    【解决方案2】:

    在您的 AndroidManifest.xml 中为您的 Activity 设置另一个 style

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

    【讨论】:

      【解决方案3】:

      深入了解您要更改的特定文本非常棒。它不起作用的事实对我来说似乎是一个错误。如果您想要一个内置的警报对话框窗口而不是自定义主题的窗口,您可以在构建警报框时使用此功能:

      AlertDialog.Builder(Context context, int theme)
      

      "theme" 可以是 AlertDialog.ThemeTraditional 或其他一些 AlertDialog 主题常量。我想你现在已经继续前进了,也许可以制作自己的警报对话框活动来替换它,但以上对我来说是一个足够的解决方法(我在浅灰色背景上有白色文本,所以我必须做点什么)。

      【讨论】:

        猜你喜欢
        • 2017-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-22
        • 1970-01-01
        • 2016-12-01
        • 2013-01-07
        相关资源
        最近更新 更多