Как получить цвет фона в MaterialButton в kotlin android
У меня есть макет:
<com.google.android.material.button.MaterialButtonToggleGroup
...
app:checkedButton="@+id/favorite_color1"
app:singleSelection="true">
<com.google.android.material.button.MaterialButton
android:id="@+id/favorite_color1"
... />
<com.google.android.material.button.MaterialButton
android:id="@+id/favorite_color2"
... />
</com.google.android.material.button.MaterialButtonToggleGroup>
в моем фрагменте я могу установить цвет фона следующим образом:
favorite_color1.setBackgroundColor(color)
А MaterialButton
имеет метод background
который возвращает RippleDrawable
и я видел этот вопрос, но он не работает и, вероятно, устарел.
Как получить цвет фона дляMaterialButton
программно?
1 ответ
В MaterialButton
цвет фона определяется app:backgroundTint
атрибут (не background
атрибут).
Связанный метод установки / получения цвета фона:
setBackgroundColor
setBackgroundTintList
getBackgroundTintList
В вашем случае вы можете использовать:
button.getBackgroundTintList()
Это ColorStateList
.
Вы можете получить цвет каждого состояния с помощью метода: colorStateList.getColorForState
.
Например:
textView.setTextColor(
colorStateList!!.getColorForState(
intArrayOf(android.R.attr.state_enabled), 0))
или в java:
textView.setTextColor(colorStateList.getColorForState(
new int[] { android.R.attr.state_enabled},0));
Просто примечание.
Если вы используетеsetBackgroundColor
метод вроде favorite_color1.setBackgroundColor(color)
приведенный выше код не работает.
Вы должны использовать метод setBackgroundTintList
favorite_color1.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(this, R.color.color)))