У меня есть проблема с применением цветов к моему приложению. Я хочу получить json из Интернета, например:
{
"colorPrimary": "#45a02c",
"colorAccent": "#a02c2c",
"backgroundColor": "#FFFFFF"
}
и сохраните его в объекте, таком как ThemeColor, который я создал. Разобрать json для объекта не проблема, но теперь я хочу создать метод в своем классе ThemeColor, который будет применять цвета объекта к моему приложению, чтобы моя панель инструментов была окрашена в этот основной цвет, или я могу использовать его с ?attr/colorPrimary
.
Это возможно? И что было бы хорошим способом добиться этого?
Определите свою пользовательскую тему внутри 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 будут меняться во время выполнения...
Правильно, вы не можете изменить свой color.xml
, используя описанный выше способ.
это потому, что это неизменно
Хорошо, спасибо всем. @Mehul Solanki, это не тот ответ, который я искал, но ты прав!
Возможный дубликат Как _реально_ программно изменить основной и акцентный цвет в Android Lollipop?