标签:android android-toolbar icons tint
如何着色菜单图标已经覆盖了几次,如下所示:
Toolbar icon tinting on Android
除此解决方案外,还存在导航图标的问题.
将主题(叠加)应用于工具栏只会对文本和白名单图标进行着色(请参阅:https://stackoverflow.com/a/26817918/2417724)
如果您设置了一个自定义图标(在这种情况下非常简单,如果您不想显示默认的后退箭头,则需要更改它),则此自定义图标不会着色.
那你如何处理你的图标?
我的所有图标都是默认黑色,我不想在工具栏中使用特殊的白色版本.
解决方法:
appcompat导航按钮 – 它只是一个AppCompatImageButton – 可以通过toolbarNavigationButtonStyle属性设置样式. AppCompat主题中的默认样式是Widget.AppCompat.Toolbar.Button.Navigation,我们可以扩展该样式以添加tint属性值.例如:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="toolbarNavigationButtonStyle">@style/Toolbar.Button.Navigation.Tinted</item>
</style>
<style name="Toolbar.Button.Navigation.Tinted" parent="Widget.AppCompat.Toolbar.Button.Navigation">
<item name="tint">@color/nav_button_tint</item>
</style>
使用此方法时需要注意几点.
在支持库版本25.4.0之前,AppCompatImageButton没有提供自己的tint属性,因此应用程序命名空间中的tint属性将不适用(除非在别处定义,否则将不存在).如果使用支持库版本25.3.0或更早版本,则必须使用平台android:tint属性.
不幸的是,这导致另一个问题,因为Lollipop之前的平台色调(API级别21)只能处理简单的单色值,并且使用ColorStateList(< selector>)资源值将导致抛出异常.如果android:tint值是一个简单的颜色,这不会产生任何问题,但通常需要着色导航图标以匹配另一个主题颜色属性,这可能很好地是一个ColorStateList.在这种情况下,有必要在res / values /和res / values-21 /中创建单独的样式,在res / values /中为android:tint指定一个简单的颜色值.
例如,如果着色以匹配主题的主要文本颜色:
RES /值/ styles.xml
<item name="android:tint">@color/normal_text_color</item>
RES /值-V21 / styles.xml
<item name="android:tint">?android:textColorPrimary</item>
如果您使用的支持库版本低于25.4.0,则只需关注上述注释即可.
标签:android,android-toolbar,icons,tint 来源: https://codeday.me/bug/20191006/1861610.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。