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汉堡/箭头图标动态改变颜色的主要内容,如果未能解决你的问题,请参考以下文章