Android中如何在运行时更改主题颜色

6

如果应用程序中添加了多个主题,则可以更改主题颜色,并且可以轻松地在运行时切换。另一种方法是逐个更改所有对象的操作栏、文本视图等颜色。这种方式非常冗长,需要大量的代码。我发现的简单方法是更改在colors.xml文件中声明的颜色,但我找不到以编程方式或第三方库来实现这一点的方法。是否有一种方法可以做到这一点。

我的Colors XML文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#ea1e63</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
</resources>

我想在运行时更改colorPrimary颜色,这将更改所有应用活动的颜色。 我发现https://github.com/negusoft/GreenMatter可以在运行时更改颜色,但它已经过时,不适用于android studio。


你想在任何事件(按钮点击)上更改颜色吗?@Burhan - Amit Vaghela
1
在程序加载或按钮点击时,只需更改颜色即可。 - DIGITAL JEDI
@Burhan,你找到这个问题的答案了吗?我也想做这件事!! - Tanveer Bulsari
1
虽然直接实现不可能,但我找到了一个叫做Green Matter的第三方库。在GitHub上查看一下吧。 - DIGITAL JEDI
1个回答

0
当您应用主题并想更改颜色时。
例如:
activity.setTheme(R.style.green);


<style name="green">
        <item name="main_background">@drawable/background_green</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="button_light">@color/button_light</item>
</style>

主题颜色无法在特定主题的运行时更改

创建自定义样式,并在您想要更改应用程序中的颜色时更改这些样式。


4
请仔细阅读问题,我不想在运行时更改主题。我想要更改保存在color.xml文件中的颜色值。 - DIGITAL JEDI
1
兄弟,你没有完全理解我的问题,你所发布的是主题切换。我想要的是在xml文件中更改颜色。例如:colorPrimary=#ea1e63,我想要colorPrimary=#000000。而不是在xml文件中添加这个。简而言之,我想要在运行时使用Java(以编程方式)更改colorPrimary。告诉我是否有一种方法可以在运行时设置colorPrimary。 - DIGITAL JEDI
1
请仔细阅读我的问题!如果我这样做 yourView.setBackgroundColor(Color.parseColor("#fffff"));那么我必须一个一个地改变每个对象的颜色。但是,如果我在xml文件中更改颜色,那么我就不需要实例化每个对象。这将节省大量代码。 - DIGITAL JEDI
1
总有一种方法可以做到。 - DIGITAL JEDI
1
你告诉我的信息已经在所有论坛上了,我也知道了。如果你找不到相关的内容,可以在Stack Overflow上提问。 - DIGITAL JEDI
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接