如何在 kotlin 的 MaterialButton 中获取背景颜色 android
How to get background color in MaterialButton in 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)
A MaterialButton
有一个方法 background
那个 returns 一个 RippleDrawable
我看到了 this question 但它不起作用而且它已经过时了大概日期。
如何以编程方式获取 MaterialButton
的背景颜色?
在 MaterialButton
中,背景颜色由 app:backgroundTint
属性(不是 background
属性)定义。
背景色set/get相关方法有:
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)))
我有一个布局:
<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)
A MaterialButton
有一个方法 background
那个 returns 一个 RippleDrawable
我看到了 this question 但它不起作用而且它已经过时了大概日期。
如何以编程方式获取 MaterialButton
的背景颜色?
在 MaterialButton
中,背景颜色由 app:backgroundTint
属性(不是 background
属性)定义。
背景色set/get相关方法有:
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)))