Панель действий – опция ifRoom оставляет слишком много места

У меня проблема с моей панелью действий, я попытался настроить для нее вид поиска , чтобы получить расширяемую панель поиска.

Это хорошо работает, за исключением того факта, что я должен был установить все другие пункты меню с опцией ifRoom , чтобы позволить полю поиска занимать всю комнату при щелчке по значку поиска.

Эта часть также хорошо работала, за исключением того факта, что слишком много элементов меню попало в переполнение меню, на вертикальном экране осталось только 2 значка (включая панель поиска).

Я сделал еще один тест на другое мероприятие, имеющее 5 пунктов меню:

  1. В первом случае я установил все из них с помощью android:showAsAction="always"
  2. Во втором случае я установил все из них с помощью “ android: showAsAction = "ifRoom" `

Вот результаты:

Дело 1:

Всегда случай

Случай 2:

Случай ifRoom

Почему, если я использую ifRoom , отображаются только 2 значка, а на самом деле 5 может легко заполнить это место?

Из-за этого у меня есть только один пункт меню рядом с моим объектом просмотра …

Благодаря!

Solutions Collecting From Web of "Панель действий – опция ifRoom оставляет слишком много места"

Похоже, это дизайнерское решение:

Джейк Уортон говорит:

Когда они содержатся внутри панели действий, существует конечный максимум элементов действия, основанный на плотности, не зависящей от плотности устройства. Элементы действия также могут не охватывать более половины ширины панели действий.

Отсюда .

В XML-файле вы можете запросить MenuItem как элемент действия, объявив android:showAsAction="ifRoom" для <item> . Таким образом, MenuItem появляется в ActionBar для быстрого доступа, только если есть доступная комната. Если места недостаточно, элемент отображается в меню переполнения.

Так что вы отвечаете:

Используйте «ifRoom», чтобы запросить, чтобы элемент появился на панели действий, но разрешите системе переместить его в меню переполнения, когда места недостаточно (при ограниченном пространстве на меньших экранах).

Вы можете использовать android:showAsAction="always" чтобы показать все меню в ActionBar .

Максимальное количество значков для опции «ifRoom» составляет 5 (пять), даже когда я переместился на мой 100-дюймовый планшет размером с экран 🙂 и отчаянно поверните его по пейзажу, см. Ссылку от ответа Джейка Уортона (Спасибо!) Http: // developer.android.com/design/patterns/actionbar.html