#android
#Android
Вопрос:
Попытка изменить цвет фона панели инструментов. Вот как он изначально устанавливается:
<androidx.appcompat.widget.Toolbar
android:id="@ id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/color_primary"
app:menu="@menu/toolbar_menu" />
И это выглядит так:
Затем я перехожу к другому фрагменту и хочу изменить этот цвет, что я делаю с помощью view model. MainActivity просматривает текущие данные и получает уведомление об этом событии цвета:
Фрагмент
appViewModel.toolbarBackgroundColor.value = R.color.black
MainActivity
appViewModel.toolbarBackgroundColor.observe(this, { color ->
// toolbar.setBackgroundColor(color)
toolbar.background = ColorDrawable(color)
})
Все работает правильно, и наблюдатель реагирует. Но панель инструментов вместо рендеринга в черном цвете выглядит следующим образом:
Что я делаю не так, когда пытаюсь сделать так, чтобы панель инструментов имела черный фон?
Комментарии:
1. Попробуйте с помощью:
ContextCompat.getColor(context,color)
.
Ответ №1:
AppViewModel.toolbarBackgroundColor.value = R.color.black
appViewModel.toolbarBackgroundColor.value
ожидает целое число, представляющее цвет.
R.color.black
выдает идентификатор ресурса, а не значение цвета.
По-видимому, идентификатор ресурса вашего черного цвета равен цвету лаванды: D
Используйте либо
getResources().getColor(R.color.black)
или
ContextCompat.getColor(context, R.color.black)
Комментарии:
1. Я знал, что это что-то в этом роде! Спасибо!