AppCompatButton на Android 5: app: backgroundTint работает, но supportBackgroundTintList НЕ работает :( - PullRequest
0 голосов
/ 04 января 2019

Мне нужно повторно использовать макет XML и программно изменить цвет кнопки. В Android 5 применение app:backgroundTint в XML меняет цвет кнопки, но мне нужно сделать это программно, и я делаю это in Recyclerview:

holder.button.supportBackgroundTintList = ContextCompat.getColorStateList(context, backgroundColorRes)

Это не имеет никакого эффекта.

1 Ответ

0 голосов
/ 04 января 2019

Метод setSupportBackgroundTintList() помечен @RestrictTo({Scope.LIBRARY_GROUP}), что означает, что вы не должны вызывать его напрямую. Вместо этого вы должны использовать ViewCompat.setBackgroundTintList().

Попробуйте вместо этого изменить код:

val colorStateList = ContextCompat.getColorStateList(context, backgroundColorRes)
ViewCompat.setBackgroundTintList(holder.button, colorStateList)

Если вы посмотрите на исходный код ViewCompat.setBackgroundTintList(), вы увидите, что он работает с API 21+ (Android 5 и выше) по-другому, чем в более ранних версиях. Скорее всего, фоновый оттенок «поддержки» применяется только в более ранних версиях Android, и ViewCompat сделает так, что вам не придется об этом думать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...