Как динамически менять иконку bottomAppBar
В моем приложении я хочу использовать 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;
}
});
Но я не хочу менять этот элемент нажатием, я хочу открыть activity
изменить значок без прослушивания щелчка.
Как я могу решить это?
1 ответ
Вы можете сохранить переменную 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));