如何动态更改bottomAppBar菜单图标
How to change dynamically bottomAppBar menu icon
在我的应用程序中,我想使用 com.google.android.material.bottomappbar.BottomAppBar
视图。
我想在该视图中显示一些 menu 项目,为此我编写了这段代码: 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;
}
});
但是我不想通过单击更改此项目,我想要 打开 activity
在没有点击侦听器的情况下更改图标。
我该如何解决这个问题?
您可以在创建菜单时保存菜单变量。这样你就可以获得你想要的特定项目并对其进行修改。
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));
在我的应用程序中,我想使用 com.google.android.material.bottomappbar.BottomAppBar
视图。
我想在该视图中显示一些 menu 项目,为此我编写了这段代码: 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;
}
});
但是我不想通过单击更改此项目,我想要 打开 activity
在没有点击侦听器的情况下更改图标。
我该如何解决这个问题?
您可以在创建菜单时保存菜单变量。这样你就可以获得你想要的特定项目并对其进行修改。
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));