【问题标题】:How to apply colors programmatically to app theme?如何以编程方式将颜色应用于应用程序主题?
【发布时间】:2019-05-27 12:40:33
【问题描述】:

我在将颜色应用到我的应用时遇到了一些问题。 我想实现从网络上获取一些 json,如下所示:

{
   "colorPrimary": "#45a02c",
   "colorAccent": "#a02c2c",
   "backgroundColor": "#FFFFFF"
}

并将其存储在我创建的 ThemeColor 之类的对象中。将 json 解析为对象是没有问题的,但现在我想在我的 ThemeColor 类中创建一个方法,它将对象的颜色应用到我的应用程序,以便我的工具栏将以这种原色着色,或者我可以使用它?attr/colorPrimary.

这可能吗? 什么是实现这一目标的好方法?

【问题讨论】:

标签: android colors themes


【解决方案1】:

style.xml 中定义您的自定义主题并在您的活动中使用它

style.xml

<style name="CustomTheme" parent="Theme.AppCompat.NoActionBar">
     <!-- Customize your theme here. -->
     <item name="colorPrimary">@color/your_custom_color</item>
     <item name="colorPrimaryDark">@color/your_custom_color_2</item>
     <item name="android:navigationBarColor">@color/your_custom_colot_3</item>
</style>

并在您的活动中使用该主题

public void onCreate(Bundle savedInstanceState) {
    setTheme(android.R.style.CustomTheme); //here your custom theme
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
}

【讨论】:

  • 但是在这种方式下,我无法将颜色更改为我的 json 颜色,对吧?我的意思是,json 颜色会在运行时改变...
  • 对,您不能使用上述方式更改您的color.xml
  • 那是因为,它是不可变的
  • 你可以看看herehere
  • Here 是您可能正在寻找的解决方案。
猜你喜欢
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-27
相关资源
最近更新 更多