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

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

【问题讨论】:

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

标签: java android navigation-drawer hamburger-menu


【解决方案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

【讨论】:

  • 是的,我试试这个,但现在没有动画
猜你喜欢
  • 2017-07-09
  • 2021-03-17
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
  • 2015-03-02
  • 2020-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多