在我的案例中,如何更改仅图标切换按钮中的图标颜色?
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>
我正在使用 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>