如何通过代码动态更改主题

时间:2016-08-16 15:02:15

标签: android material-design android-theme android-design-library

我已经为我的应用程序实现了材质设计,我希望用户能够自定义colorPrimary,colorPrimaryDark和colorAccent的颜色。怎么做?

我想要一个设置活动,用户可以选择自己的颜色,更改将应用​​于我的所有活动。感谢。

<style name="MyTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

1 个答案:

答案 0 :(得分:0)

根据您是否允许用户从静态颜色列表或颜色选择器中进行选择,您可以保存他们在SharedPreferences中选择的颜色,并在应用启动时将其拉出。不幸的是,这意味着你必须设置你使用这些颜色的所有视图的颜色为via代码而不是xml,因为主题是不可变的。看看这篇文章:How to _really_ programmatically change primary and accent color in Android Lollipop?你可以从devconsole的答案中采取这种方法; https://stackoverflow.com/a/37905131/3314615