Скрытие базы MenuItem на экране (активность)

Возможный способ скрытия базы элементов меню на экране (активность) находится на переднем плане. У меня есть четыре (4) элемента меню, и я хочу показать два (2) на панели действий и принудительно ввести 2 в меню переполнения, на каком-то экране я хочу показать три (3) и иметь один (1) в меню переполнения, и на каком-то экране плитка страницы длинная. Я не хочу, чтобы она была усечена, но вместо этого я хочу показать только один (1) элемент меню на панели действий и принудительно вывести три (3) других в меню переполнения.

Мне нужен общий способ сделать это.

Мне нужно сделать это программно. Мне не нужен xml-ответ IfRoom, у меня есть BaseActivity, который расширяет ActionBar, и у меня есть BaseActivityHelper, где у меня завышен макет меню, все мои другие действия расширяют BaseActivity.

Я хотел бы поделиться своим кодом, но мне не разрешено это делать, большой вопрос в том, столкнетесь ли вы с такой ситуацией, как вы это сделаете.


person Joseph Odibo    schedule 15.01.2015    source источник


Ответы (1)


Документы говорят:

Если вы хотите изменить меню параметров на основе событий, происходящих в течение жизненного цикла активности, вы можете сделать это в методе onPrepareOptionsMenu(). Этот метод передает вам объект меню в том виде, в каком он существует в настоящее время, чтобы вы могли изменить его, например добавить, удалить или отключить элементы. (Фрагменты также предоставляют обратный вызов onPrepareOptionsMenu().)

Таким образом, вы можете взять свой пункт меню в onPrepareOptionsMenu и вызвать его setShowAsAction(int actionEnum) с соответствующей опцией (SHOW_AS_ACTION_ALWAYS, SHOW_AS_ACTION_IF_ROOM или SHOW_AS_ACTION_NEVER)

person dev.bmax    schedule 15.01.2015