全屏对话框关闭图标为黑色

Posted

技术标签:

【中文标题】全屏对话框关闭图标为黑色【英文标题】:Fullscreen Dialog dismiss icon in black 【发布时间】:2015-09-30 14:15:48 【问题描述】:

这个问题是android Fullscreen dialog confirmation and dismissive actions 的后续问题,它使用如下图所示的深色主题,因此图标显示为白色。


我想将“X”图标显示为黑色,因为我使用的是浅色主题。

另一个问题有一个公认的解决方案来更改ActionBar 图标,如下所示:

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

即使我使用的是浅色主题,它也会显示一个白色 X。


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

【问题讨论】:

你为什么不使用黑色/深色“X”图像而不是 我想尽可能使用系统默认值。 (如果可能的话)。然后,当新样式存在且图形略有不同时,我无需更新应用程序。 【参考方案1】:

support-v4 库中内置了以这种方式为股票图标着色的方法,Chris Banes 在他的博客中对此进行了描述:

Support Libraries v22.1.0

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

相关问题:

DrawableCompat tinting does not work on pre-Lollipop Android: Tint using DrawableCompat

【讨论】:

以上是关于全屏对话框关闭图标为黑色的主要内容,如果未能解决你的问题,请参考以下文章

安卓导航组件。显示带有从箭头到十字的变形导航图标的全屏对话框

怎样用MFC去掉打开图像时窗口的最大化最小化关闭按钮,然后让图像全屏?

使用 DialogFragment 和导航库时将对话框显示为全屏或对话框

angular primeng p-confirmdialog - 如何用谷歌素材图标替换对话框面板的关闭图标

jQuery UI 对话框 - 缺少关闭图标

开机出现黑色对话框,但是马上就自己消失了,文件名搜出来unzip.exe怎么解决啊?以前都没有的。