在我的案例中,如何更改仅图标切换按钮中的图标颜色?

How can I change color of icon in icon-only toggle button in my case?

我正在使用 Material 设计,但遇到了问题。 我有一个组 com.google.android.material.button.MaterialButtonToggleGroup,其中包含样式为 @style/Widget.App.Button.OutlinedButton.IconOnly 的纯图标切换按钮。 我使用的样式来自 documentation:

<style name="Widget.App.Button.OutlinedButton.IconOnly" parent="Widget.MaterialComponents.Button.OutlinedButton">
        <item name="iconPadding">0dp</item>
        <item name="android:insetTop">0dp</item>
        <item name="android:insetBottom">0dp</item>
        <item name="android:paddingLeft">12dp</item>
        <item name="android:paddingRight">12dp</item>
        <item name="android:minWidth">48dp</item>
        <item name="android:minHeight">48dp</item>
</style>

有截图:without selection and selected。 当按钮被选中时,图标有颜色原色。但我希望每个按钮在被选中时都有自己的颜色(例如第一个按钮 - 绿色,第二个 - 黄色等)我尝试使用 this question 中的提示,但它会导致错误。 iconColor、tint 等也会导致错误。可能是因为我正在使用 Material 样式...如何在仅图标切换按钮中更改图标的颜色?不一定仅在选择按钮时更改颜色,如果按钮在选择前为绿色并且在选择时具有 colorPrimary,我会很高兴。

I would be happy if button will be green before selection and will have colorPrimary when selected.

图标是灰色的,因为默认颜色是 android:alpha="0.60" android:color="?attr/colorOnSurface"

您可以更改它以覆盖 iconTint 属性的样式:

     <com.google.android.material.button.MaterialButtonToggleGroup>
    
         <com.google.android.material.button.MaterialButton               
         style="@style/Widget.App.Button.OutlinedButton.IconOnly.Green"
         />
    
         <com.google.android.material.button.MaterialButton
           style="@style/Widget.App.Button.OutlinedButton.IconOnly.Red"
         />

其中:

<style name="Widget.App.Button.OutlinedButton.IconOnly.Green">
    <item name="iconTint">@color/icon_tint_selector</item>
</style>

带有选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:alpha="1.00" android:color="?attr/colorPrimary" android:state_checkable="true" android:state_checked="true" android:state_enabled="true"/>
    <item android:alpha="0.60" android:color="@color/green500" android:state_checkable="true" android:state_checked="false" android:state_enabled="true"/> <!-- this color -->
    <item android:alpha="1.00" android:color="?attr/colorPrimary" android:state_enabled="true"/>
    <item android:alpha="0.38" android:color="?attr/colorOnSurface"/>
</selector>