Android:动态更改应用程序主题

时间:2015-12-17 00:47:24

标签: android android-theme

这是我的应用程序的执行样式:

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:alertDialogTheme">@style/customDialog</item>
    <item name="android:actionBarStyle">@style/customActionBar</item>
</style>


<style name="LoginStyle" parent="AppTheme.Base">
    <item name="colorPrimaryDark">@color/Material_Blue</item>
    <item name="colorControlNormal">#c5c5c5</item>
    <item name="colorControlActivated">#FFFFFF</item>
    <item name="colorControlHighlight">#FFFFFF</item>
</style>

<style name="MainStyle" parent="AppTheme.Base">
    <item name="android:actionBarTheme">@style/customActionBar</item>
    <item name="android:colorAccent">@color/md_material_blue_600</item>
    <item name="colorPrimaryDark">@color/Material_Blue</item>
    <item name="colorControlNormal">@color/md_material_blue_600</item>
    <item name="colorControlActivated">@color/md_material_blue_600</item>
    <item name="colorControlHighlight">@color/md_material_blue_600</item>
</style>

<style name="customDialog">
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
    <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
    <item name="colorControlActivated">@color/md_material_blue_600</item>
    <item name="android:colorControlHighlight">@color/md_material_blue_600</item>
    <item name="android:button">@color/md_material_blue_600</item>
</style>

<style name="customActionBar">
    <item name="android:background">@color/Material_Blue</item>
</style>

正如您所看到的,我的应用程序有一些不同的主题,但现在有些用户要求我实现一个可以将“浅色主题”切换为“黑暗主题”的功能。现在,如果我将AppTheme.Base的主题父级更改为Theme.AppCompat,整个应用程序将获得“黑暗主题”。

那么,有没有办法改变基本主题的父主题?或者我需要做什么才能得到我的结果?

我读过这个:https://stackoverflow.com/a/18301723/5327202,我已经实现了这些类,但它只将文本颜色改为白色而没有别的。(当然我在xml中创建了另一种风格;本质上,我已复制粘贴原始主题,然后将AppTheme.Base父级更改为Theme.AppCompat

感谢。

1 个答案:

答案 0 :(得分:1)

为此上下文设置基本主题。请注意,应该在Context中实例化任何视图之前调用它(例如在调用setContentView(View)或inflate(int,ViewGroup)之前)。

check http://developer.android.com/reference/android/content/Context.html#setTheme%28int%29

!= 1 order by
相关问题