android-如何设置MenuItem的图标颜色?

我定义了一个具有ShareActionProvider并共享白色图标的菜单项,如下所示:

android:icon="@drawable/ic_share_white_24dp"

android:id="@+id/action_share"

android:title="@string/action_share"

android:orderInCategory="200"

app:showAsAction="ifRoom"

app:actionProviderClass="android.support.v7.widget.ShareActionProvider"/>

但是,当我启动该应用程序时,我得到了另一个黑色共享图标。 如何将共享图标设置为白色?

这是我的结果

Dimitri asked 2020-06-21T14:03:13Z

7个解决方案

66 votes

该图标实际上是由ShareActionProvider提供的,您无法对其进行更改。 但是,您可以通过在styles.xml中设置textColorPrimary来自定义颜色:

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="?attr/actionBarSize"

app:theme="@style/MyActionBarTheme"

app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

#fa0

对于任何自定义图标,您都必须自己为它们着色。

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.menu_main, menu);

for(int i = 0; i < menu.size(); i++){

Drawable drawable = menu.getItem(i).getIcon();

if(drawable != null) {

drawable.mutate();

drawable.setColorFilter(getResources().getColor(R.color.textColorPrimary), PorterDuff.Mode.SRC_ATOP);

}

}

return true;

}

tachyonflux answered 2020-06-21T14:05:01Z

39 votes

这是一个主题问题。 根据您当前的主题,您需要设置正确的ActionBar叠加主题。 动作提供者读取主题中的值(指示主题是深色还是浅色)以确定图标的颜色。

如果主主题是浅色,而ActionBar是黑暗,则ActionBar /工具栏必须使用主题ThemeOverlay.AppCompat.Dark.ActionBar。

BladeCoder answered 2020-06-21T14:04:36Z

32 votes

试试这个 :

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.MENU, menu);

// change color for icon 0

Drawable yourdrawable = menu.getItem(0).getIcon(); // change 0 with 1,2 ...

yourdrawable.mutate();

yourdrawable.setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.SRC_IN);

return true;

}

druci answered 2020-06-21T14:05:20Z

25 votes

简短而甜蜜的答案-> app:iconTint =“ @ color / yourcolor

在MenuItem中添加app:iconTint="@color/yourcolor",以更改图标颜色。

android:icon="@drawable/ic_share_white_24dp"

android:id="@+id/action_share"

android:title="@string/action_share"

android:orderInCategory="200"

app:iconTint="@color/yourcolor"

app:showAsAction="ifRoom"

app:actionProviderClass="android.support.v7.widget.ShareActionProvider"/>

Nikunj Paradva answered 2020-06-21T14:05:48Z

3 votes

简短的答案->使用app:iconTint="?android:textColorPrimary"如果您希望图标颜色为白色,请输入:android:theme = "@style/ThemeOverlay.MaterialComponents.Dark.ActionBar"否则,如果要黑色,请输入:android:theme="@style/ThemeOverlay.MaterialComponents.Light"到您的工具栏

answered 2020-06-21T14:06:08Z

1 votes

@Override

public void onCreateOptionsMenu(Menu menu, MenuInflater menuInflater) {

menuInflater.inflate(R.menu.menu_confirm, menu);

MenuItem action_done = menu.findItem(R.id.action_done);

action_done.setIcon(R.drawable.ic_filter);

Utils.menuIconColor(action_done, Color.WHITE);

super.onCreateOptionsMenu(menu, menuInflater);

}

public static void menuIconColor(MenuItem menuItem, int color) {

Drawable drawable = menuItem.getIcon();

if (drawable != null) {

drawable.mutate();

drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);

}

}

Ahamadullah Saikat answered 2020-06-21T14:06:23Z

0 votes

这种现象是预期的,因为ShareActionProvider是

负责创建实现数据共享的视图,并负责 如果放置了托管项目,则显示带有共享活动的子菜单 在溢出菜单上。

根据文档。

这意味着使用视图时,您无法控制其自定义。

Robert Estivill answered 2020-06-21T14:06:58Z

android menuitem 字体颜色,android-如何设置MenuItem的图标颜色?相关推荐

  1. android span字体修改,Android TextView使用SpannableString设置复合文本的方法详解

    本文实例讲述了Android TextView使用SpannableString设置复合文本的方法.分享给大家供大家参考,具体如下: TextView通常用来显示普通文本,但是有时候需要对其中某些文本 ...

  2. android roboto字体下载,Android字体设置及Roboto字体使用方法

    本文实例讲述了Android字体设置及Roboto字体使用方法.分享给大家供大家参考.具体分析如下: 一.自定义字体 1.android Typeface使用TTF字体文件设置字体 我们可以在程序中放 ...

  3. Android自定义折线图,可设置基准线,不同点颜色

    最近项目中需要用到折线图,发现了一款比较好用的折线图hellocharts,做了炫酷的动画以及折线图,柱状图,混合图都有涉及到,非常的棒,在此推荐一下. 但是使用过程中碰到这样的需求: ①:不同数据点 ...

  4. android 布局 字体大小,android布局文件怎样设置字体

    Android系统默认支持三种字体,分别为:"sans", "serif", "monospace",除此之外还可以使用其他字体文件(*.t ...

  5. android设置webview光标颜色,CSS自定义设置元素闪烁光标颜色

    这次给大家带来CSS自定义设置元素闪烁光标颜色,CSS自定义设置元素闪烁光标颜色的注意事项有哪些,下面就是实战案例,一起来看一下. 前言因为业务需求, 要求我们的input框内的文本与悬浮的光标颜色不 ...

  6. android白色字体代码,Android实现状态栏白底黑字效果示例代码

    前言 本文主要给大家介绍了关于Android如何实现状态栏白底黑字的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.描述 在项目中有的时候Ui设计状态栏背景颜色是白色的 ...

  7. Android通知栏字体大小,Android通知栏介绍与适配总结(上篇)

    此文已由作者黎星授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 由于历史原因,Android在发布之初对通知栏Notification的设计相当简单,而如今面对各式各样的通知 ...

  8. android textview 字体阴影,Android TextView加上阴影效果

    废话不多说直接说关键的: 字体阴影需要四个相关参数: 1. android:shadowColor:阴影的颜色2. android:shadowDx:水平方向上的偏移量3. android:shado ...

  9. android list字体大小,android自定义ListPreference字体大小

    这篇博客算是自己的一个记录吧,组长给了一个任务,需要实现一个紧急广播的一系列设置功能,但是客户那边设置界面的字体大小有特殊的要求,看了一下,对于ListPreference这样的控件,android系 ...

最新文章

  1. Android --- 很好用的时间选择器
  2. 11 ORA系列:ORA-01791: 不是 SELECTed 表达式(distinct使用注意点)
  3. 如何在局域网内查找病毒主机
  4. reactjs DOM的Diffing算法
  5. .Net 分布式云平台基础服务建设说明概要
  6. python 中的if else 和in
  7. sever2008 ad用户和计算机不见,windows-server-2008 – 当我使用Powershell将用户添加到安全组时,它们不会显示在AD中...
  8. COMSOL随机裂缝生成
  9. Linux系统上安装微信 QQ , 还在用wine ? 快弃坑吧 ,xDroid尝试一下!!!
  10. JAVA proxy dns回源_常见问题 - CDN 回源配置相关问题
  11. 利用TouchDelegate提升用户体验
  12. 蓝牙电话之HFP-通话
  13. JSON.stringify(value[, replacer[, space]])中三个参数详解
  14. python双样本t检验_两样本t检验的scipy实现
  15. Android:检查通知权限并跳转到通知设置界面
  16. mysql查询每门课程成绩最好的前两名学生id和姓名
  17. java script中extends,JavaScript继承之ES6的extends
  18. MATLAB画曲线图
  19. 算法分析与设计期末总结
  20. [转载] 晓说——第19期:千年科举那些事——官场

热门文章

  1. Windows上有哪些好用的 ePub 阅读器?推荐三款,亲测好用
  2. java中对文件的操作,以及目录间隔符file.separator的使用
  3. python+find_all函数_BeautifulSoup库之find_all函数
  4. QFile.readall();最多读取1G
  5. 是“药”三分毒:新冠病毒会开启监控文化吗?
  6. 非985、211毕业的你,真的找不到好工作吗?
  7. css实现背景透明,内容不透明
  8. mysql增删改查,连表,排序,等
  9. 软件测试知识汇总(一)
  10. 老程序员被裁怎么办?他选择成为了自由职业者