全屏对话框解除黑色

时间:2015-09-30 14:15:48

标签: android material-design

此问题是对Android Fullscreen dialog confirmation and dismissive actions的跟进,后者根据下图使用黑暗主题,因此图标以白色显示。

enter image description here

我想显示" X"黑色图标,因为我使用的是主题。

另一个问题有一个可接受的解决方案,用于更改ActionBar图标,如下所示:

getSupportActionBar().setHomeAsUpIndicator(android.R.drawable.ic_menu_close_clear_cancel);

即使我使用的是浅色主题,也会显示白色X.

我似乎记得有一种方法可以使用提供的图标,并将其设为主题,以便在浅色背景下以黑色显示......?

1 个答案:

答案 0 :(得分:3)

以这种方式着色股票图标的颜色内置于support-v4库中,并由Chris Banes在他的博客中描述:

  

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);

这使我的确切代码非常简单:

// set X close icon in black
Drawable drawable = getResources()
        .getDrawable(R.drawable.abc_ic_clear_mtrl_alpha);
drawable = DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, Color.BLACK);
getSupportActionBar().setHomeAsUpIndicator(drawable);

相关问题: