如何通过 java 代码更改 android 中的颜色值
How to change a color value in android via java code
I want to change the hex color value of a color variable and colorAccent color defined in
the colors.xml file by MainActivity.java code.
What code should I write in the java file inside a method or a switch or if/else
statement to change it?
您应该使用主题和样式来更改颜色值。
参见:Styles and Themes
基本上,你应该在styles.xml中声明颜色:
<style name="GreenText" parent="TextAppearance.AppCompat">
<item name="android:textColor">#00FF00</item>
</style>
<style name="RedText" parent="TextAppearance.AppCompat">
<item name="android:textColor">#ff0000</item>
</style>
然后在 onCreate 中声明使用哪个主题(在 setContentView() 之前):
switch (theme) {
case 1:
setTheme(R.style.Green);
break;
case 2:
setTheme(R.style.Red);
break;
}
编辑:
您只能在 onCreate() 期间更改主题 - 如果您想在之后更改它,在运行时,您将必须通过调用 recreate()
重新创建您的 activity
不幸的是,资源目录中的所有颜色值(和其他资源)都被硬编码为静态最终整数。这意味着无法在运行时更改这些值。但是,您可以使用之前建议的解决方案之一或查看这个优秀的
I want to change the hex color value of a color variable and colorAccent color defined in the colors.xml file by MainActivity.java code.
What code should I write in the java file inside a method or a switch or if/else statement to change it?
您应该使用主题和样式来更改颜色值。 参见:Styles and Themes
基本上,你应该在styles.xml中声明颜色:
<style name="GreenText" parent="TextAppearance.AppCompat">
<item name="android:textColor">#00FF00</item>
</style>
<style name="RedText" parent="TextAppearance.AppCompat">
<item name="android:textColor">#ff0000</item>
</style>
然后在 onCreate 中声明使用哪个主题(在 setContentView() 之前):
switch (theme) {
case 1:
setTheme(R.style.Green);
break;
case 2:
setTheme(R.style.Red);
break;
}
编辑:
您只能在 onCreate() 期间更改主题 - 如果您想在之后更改它,在运行时,您将必须通过调用 recreate()
不幸的是,资源目录中的所有颜色值(和其他资源)都被硬编码为静态最终整数。这意味着无法在运行时更改这些值。但是,您可以使用之前建议的解决方案之一或查看这个优秀的