В моем случае я определил сценарий, у меня есть FAB, и я хочу, чтобы он имел три разных цвета в трех разных темах (у меня есть 3 темы - темная, светлая, обычная).
Поэтому я использую атрибут и меняю цвета FAB во всех темах (для одного и того же атрибута). Теперь я хочу сделать это программно, а не через xml.
Поэтому мне нужен способ, чтобы я мог получить доступ к этому атрибуту внутри своей деятельности, а затем получить цвет из атрибута и установить его в качестве цвета фона FAB (на основе разных тем)
P.S. Я уже проверил несколько ответов на SO, но в моем случае они бесполезны. Проблема в том, что они предназначены для текстовых представлений, а не потрясающих, и иногда кажется, что это много шаблонного кода.
Если у вас есть понимание, как решить эту проблему, пожалуйста, дайте мне знать. Спасибо!
Я проверил это, и это работает для меня:
val color = MaterialColors.getColor(context, R.attr.myColor, Color.GRAY)
binding.fab.backgroundTintList = ColorStateList.valueOf(color)
Это ^^^ между прочим из SO, в частности из этого ответа и его комментариев: Получить значение цвета программно, когда это ссылка (тема).
Ааа, большое спасибо :)) Я попробовал этот ответ, но, к сожалению, не проверил комментарии.
Это не работает для вас
val color = MaterialColors.getColor(context, R.attr.myColor, Color.GRAY)иfab.backgroundTintList = ColorStateList.valueOf(color)?