Как получить цвет, который определяется как атрибут для разных тем в Android [Kotlin]

В моем случае я определил сценарий, у меня есть FAB, и я хочу, чтобы он имел три разных цвета в трех разных темах (у меня есть 3 темы - темная, светлая, обычная).

Поэтому я использую атрибут и меняю цвета FAB во всех темах (для одного и того же атрибута). Теперь я хочу сделать это программно, а не через xml.

Поэтому мне нужен способ, чтобы я мог получить доступ к этому атрибуту внутри своей деятельности, а затем получить цвет из атрибута и установить его в качестве цвета фона FAB (на основе разных тем)

P.S. Я уже проверил несколько ответов на SO, но в моем случае они бесполезны. Проблема в том, что они предназначены для текстовых представлений, а не потрясающих, и иногда кажется, что это много шаблонного кода.

Если у вас есть понимание, как решить эту проблему, пожалуйста, дайте мне знать. Спасибо!

Это не работает для вас val color = MaterialColors.getColor(context, R.attr.myColor, Color.GRAY) и fab.backgroundTintList = ColorStateList.valueOf(color)?

Emanuel Moecklin 14.09.2022 21:21
0
1
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Я проверил это, и это работает для меня:

val color = MaterialColors.getColor(context, R.attr.myColor, Color.GRAY)
binding.fab.backgroundTintList = ColorStateList.valueOf(color)

Это ^^^ между прочим из SO, в частности из этого ответа и его комментариев: Получить значение цвета программно, когда это ссылка (тема).

Ааа, большое спасибо :)) Я попробовал этот ответ, но, к сожалению, не проверил комментарии.

oyeraghib 14.09.2022 22:02

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