繁体   English   中英

如何动态更改bottomAppBar菜单图标

[英]How to change dynamically bottomAppBar menu icon

在我的应用程序中,我想使用com.google.android.material.bottomappbar.BottomAppBar视图。
我想在此视图中显示一些菜单项,为此,我编写以下代码: detailBottomAppBar.replaceMenu(R.menu.empty_menu); ,并使用此代码可以在此视图中显示菜单项。

我想动态更改此菜单项之一的菜单图标。 但我不知道该怎么做。

我可以使用以下代码通过点击监听器更改图标

        detailBottomAppBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.detailMenu_favorite:
                        Toast.makeText(getViewContext(), "Favorite", Toast.LENGTH_SHORT).show();
item.setIcon(ContextCompat.getDrawable(getViewContext(), R.drawable.ic_search_24dp));
                        break;
                    case R.id.detailMenu_comment:
                        Toast.makeText(getViewContext(), "Comment", Toast.LENGTH_SHORT).show();
                        break;
                }
                return true;
            }
        });

但是我不想 用click来改变这个项目, 我想在没有click listener的情况下进行开放 activity来改变图标。

我该如何解决?

创建菜单时,可以保存Menu变量。 这样,您可以获取所需的特定项目并进行修改。

private Menu _menu;

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
   getMenuInflater().inflate(R.menu.main, menu);
   _menu = menu;
}

访问所需的菜单项

MenuItem item = _menu.findItem(R.id.menu_item_id);
item.setIcon(ContextCompat.getDrawable(getViewContext(), R.drawable.ic_search_24dp));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM