【问题标题】:How to change a color value in android via java code如何通过java代码更改android中的颜色值
【发布时间】:2020-01-08 09:21:23
【问题描述】:

我想改变一个颜色变量的十六进制颜色值和定义在 通过 MainActivity.java 代码的 colors.xml 文件。

我应该在方法或开关或 if/else 内的 java 文件中编写什么代码 声明要改吗?

【问题讨论】:

  • 资源是不可变的,所以你不能改变它们的值。为什么你需要改变它们?
  • 把 if-else 使用不同的颜色键。你不能改变颜色值
  • 您可以创建不同的主题配置,并以编程方式在它们之间切换。
  • @Aousafrashid 所以资源是不可变的,然后我将定义一个具有所需值的不同颜色变量,但是 colorAccent 呢?我如何通过java代码更改它
  • @nazmul 如何创建不同的主题配置?请写一个答案或推荐给我一个

标签: java android android-studio colors android-styles


【解决方案1】:

您应该使用主题和样式来更改颜色值。 见: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() 重新创建您的活动

【讨论】:

  • colorAccent 颜色怎么样?如何以编程方式更改它
  • @Black mamba 发布的所有颜色值都是硬编码的。因此,您处理想要做的事情的一种方法是准备多个不同的主题并切换它们。
【解决方案2】:

不幸的是,资源目录中的所有颜色值(和其他资源)都被硬编码为静态最终整数。这意味着无法在运行时更改值。但是,您可以使用之前建议的解决方案之一,或者看看这个优秀的

here's exaplained

【讨论】:

    猜你喜欢
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多