【问题标题】:Tinting of icons like in the Support NavigationView支持 NavigationView 中的图标着色
【发布时间】:2015-06-07 10:53:23
【问题描述】:

NavigationView 会对图标进行着色(如果它们着色)。 我的图标是绿色的,在 NavigationView 中是灰色。这是如何工作的?

我想自己在其他视图中执行此操作,但我没有找到 NavigationView 是如何执行此操作的。

【问题讨论】:

  • 您需要设置您的 colorPrimary 和 colorPrimaryDark 样式。您还需要确保将您的项目设置为已选中。
  • 我想用另一个视图来做这个,而不是 NavigationView。我有我的图标的视图,但我想以灰色而不是图标的颜色显示图标。我怎样才能做到这一点? NavigationView 只是一个示例,因为它们改变了我图标的颜色 :-) 所以应该是可能的,但是如何?

标签: android navigation-drawer androiddesignsupport navigationview


【解决方案1】:

blog post 解释了可绘制对象的 AppCompat 着色。这是你要找的吗?

Lollipop 中添加的 Drawable 着色方法是 对于让您动态着色资产非常有用。 AppCompat 有 它自己在 v21 支持库中实现,我们已经 现在将其提取到 support-v4 中的 DrawableCompat 中,供大家使用 采用。不过,了解它的工作原理很重要。

Drawable drawable = ...;

// Wrap the drawable so that future tinting calls work 
// on pre-v21 devices. Always use the returned drawable.
drawable = DrawableCompat.wrap(drawable);

// We can now set a tint 
DrawableCompat.setTint(drawable, Color.RED);
// ...or a tint list 
DrawableCompat.setTintList(drawable, myColorStateList);
// ...and a different tint mode
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_OVER);

或者,如果您只想为 ImageView 着色,您可以这样做:

ImageView image = (ImageView) findViewById(R.id.image);
image.setColorFilter(...);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多