Android汉堡/箭头图标动态改变颜色

Posted

技术标签:

【中文标题】Android汉堡/箭头图标动态改变颜色【英文标题】:Android burger/arrow icon dynamic change color 【发布时间】:2015-11-20 14:03:43 【问题描述】:

我想更改导航抽屉的汉堡/箭头图标的颜色。我知道我可以改变它的样式,但我想在java中动态改变它。有人知道怎么做吗?

【问题讨论】:

什么代码不工作? 这里有同样的问题。和@moffeltje 猜拉法尔没有幸运地寻找它的代码(这里也一样).. 寻找它已经 3 个小时了。 Rafal 如果您找到了答案,您可以发布它或解决它吗? 不,我没有找到如何做到这一点,唯一的方法是为图标着色是在资源中更改主题:/ 我明白了,我正在尝试动态更改工具栏的所有元素。我现在失踪了 ActionMenuViews look at my question. 【参考方案1】:

使用 appcompat-v7:23.0.1 下一个代码对我有用:

int color = Color.parseColor("#FFEEEE00");
final PorterDuffColorFilter colorFilter = new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP);

for (int i = 0; i < toolbar.getChildCount(); i++) 
    final View v = toolbar.getChildAt(i);

    if (v instanceof ImageButton)        
        ((ImageButton) v).setColorFilter(colorFilter);
    

public boolean onCreateOptionsMenu(Menu menu)中使用它

【讨论】:

发现它对你有用吗?,你需要别的东西还是很好。 Remember to accept the correct answer 这行得通,谢谢。并且需要在onCreateOptionsMenu中设置,否则不起作用。至少对我来说。【参考方案2】:

您可以使用新的DrawableCompat 类的setTint(来自支持v4 库)

// Get the icon you want as a drawable
Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_menu, null);
// "Enable" tinting process
drawable = DrawableCompat.wrap(drawable);
// Tint it
DrawableCompat.setTint(drawable, Color.BLACK);
// Set it as action bar icon
actionBar.setHomeAsUpIndicator(drawable);

有关可绘制着色的更多详细信息,请参阅Chris Bane post about support lib V22.1

【讨论】:

是的,我试试这个,但现在没有动画

以上是关于Android汉堡/箭头图标动态改变颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何更改工具栏主页图标颜色

如何更改材料设计导航抽屉中汉堡图标的颜色

工具栏导航汉堡图标丢失

Bootstrap 4.0自定义汉堡图标[重复]

如何更改expandableListView的箭头颜色? [关闭]

如何在使用Android Jetpack导航时禁用导航图标