【问题标题】:Setting icons to the menu items为菜单项设置图标
【发布时间】:2016-04-19 11:01:36
【问题描述】:

我有一个带有多个菜单项的导航抽屉。我正在尝试动态更改菜单项之一的菜单图标和文本颜色。以下代码位于具有导航抽屉的活动类之一的onCreate() 中:

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
changeItemWiseTextProperties(navigationView.getMenu());

这是方法定义:

public void changeItemWiseTextProperties(Menu menu) {
    menu.findItem(R.id.nav_testing).
        setTitle(Html.fromHtml("<font color='#3b9ada'>Testing</font>"));

    menu.findItem(R.id.nav_testing).
        setIcon(ContextCompat.getDrawable(this,R.drawable.icon_testing_activated));
}

虽然我可以成功设置菜单项的标题名称和字体颜色,但对菜单图标没有任何影响。我无法改变这一点。为什么会这样?

【问题讨论】:

  • 使用 invalidateOptionsMenu();刷新菜单
  • @JhamanDas,试过了。它没有用。我是在changeItemWiseTextProperties()方法中设置菜单图标后放置的

标签: android menu navigation-drawer


【解决方案1】:

我检查了我的代码并在日志中打印了 icon.toString():menu.findItem(R.id.nav_testing).getIcon().toString()

以编程方式更改菜单图标前后:menu.findItem(R.id.nav_testing).getIcon()...

结果?我得到了两个不同的值。这意味着图标正在发生变化。但是为什么菜单上没有反映变化呢?

原因:我有两个图标 - 除了颜色之外,其他方面都相同。最初是icon_testing(灰色),然后我将其设置为icon_testing_activated(蓝色)。

灰色是未选定菜单项的默认颜色,而蓝色是选定菜单项的默认颜色。由于我为其设置蓝色图标 (icon_testing_activated) 的菜单项未被选中,因此它被转换为默认的未选中颜色 - 灰色。而且由于这两个图标除了颜色是相同的,我认为 setIcon() 方法不起作用。

解决方案:我以编程方式检查了要更改颜色的菜单项:

menu.findItem(R.id.nav_testing).setChecked(true);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-15
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多