【问题标题】:Android DatePickerDialog accent color (in v21+)Android DatePickerDialog 强调色(在 v21+ 中)
【发布时间】:2014-12-05 15:41:22
【问题描述】:

我正在为我的应用程序使用支持库 21。我的主题也在 values-v21 中定义,但 DatePickerDialog 不使用强调色作为背景和文本颜色。

如何将此颜色更改为强调色?

我当前的themes.xml是

values/themes.xml

<style name="AppTheme" parent="AppTheme.Base" />

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="windowActionModeOverlay">true</item>

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

values-v21/themes.xml

<style name="AppTheme" parent="AppTheme.Base">
    <item name="android:colorPrimary">@color/colorPrimary</item>
    <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="android:colorAccent">@color/colorAccent</item>

    <item name="android:alertDialogTheme">@style/AppTheme.AlertDialog</item>
</style>

<style name="AppTheme.AlertDialog" parent="android:Theme.Material.Light.Dialog.Alert">
    <item name="android:colorPrimary">@color/colorPrimary</item>
    <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="android:colorAccent">@color/colorAccent</item>
</style>

【问题讨论】:

  • 应用主题定义了一个默认的对话框主题。您需要扩展此主题以包含您的强调色。
  • @alanv 我已将我当前(部分工作)的主题添加到我的原始帖子中。你能看出我对 DatePickerDialog 的错误吗?

标签: android android-5.0-lollipop android-theme


【解决方案1】:

您的对话框主题需要扩展 Theme.AppCompat.Light.Dialog 而不是 Theme.Material.Light.Dialog.Alert。这是一个例子:

<!-- Base Theme Styles -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

    <!-- my theme stuff -->
    ...

    <!-- dialog theme stuff -->
    <item name="android:dialogTheme">@style/AppTheme.DialogTheme</item>

</style>

<!-- Styles for pop-up dialogs -->
<style name="AppTheme.DialogTheme" parent="Theme.AppCompat.Light.Dialog">

    <item name="android:colorPrimary">@color/primaryColor</item>
    <item name="android:colorPrimaryDark">@color/primaryColorDark</item>
    <item name="android:colorAccent">@color/accentColor</item>

</style>

【讨论】:

  • @kaftanati 不正确,如果使用 appcompat v21,则此方法有效。您只需要在颜色项中省略“android:”前缀即可。
  • 但我使用了所有设备的 support-appcompat v7 (8+)。
  • 有效。但我不知道如何更改“活动颜色”。例如 Datepicker,标记一天,它使用与上述样式中设置的颜色不同的颜色。
  • @DanielBo 在 AppTheme.DialogTheme 中使用:@color/colorPrimary 来设置样式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多