Как программно применить цвета к теме приложения?

У меня есть проблема с применением цветов к моему приложению. Я хочу получить json из Интернета, например:

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

и сохраните его в объекте, таком как ThemeColor, который я создал. Разобрать json для объекта не проблема, но теперь я хочу создать метод в своем классе ThemeColor, который будет применять цвета объекта к моему приложению, чтобы моя панель инструментов была окрашена в этот основной цвет, или я могу использовать его с ?attr/colorPrimary .

Это возможно? И что было бы хорошим способом добиться этого?

0
1
103
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Определите свою пользовательскую тему внутри style.xml и используйте ее в своей деятельности.

стиль.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 будут меняться во время выполнения...

JonasPTFL 27.05.2019 14:50

Правильно, вы не можете изменить свой color.xml, используя описанный выше способ.

Mehul Solanki 27.05.2019 14:51

это потому, что это неизменно

notTdar 27.05.2019 14:53

Вы можете посмотреть здесь и здесь

Mehul Solanki 27.05.2019 14:55
Здесь — это решение, которое вы ищете.
Mehul Solanki 27.05.2019 14:57

Хорошо, спасибо всем. @Mehul Solanki, это не тот ответ, который я искал, но ты прав!

JonasPTFL 28.05.2019 20:35

Другие вопросы по теме