Изменение фона панели инструментов приводит к цвету лаванды

#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. Я знал, что это что-то в этом роде! Спасибо!