Intereting Posts
Как изменить цвет делителя по умолчанию для всех списков ListViews Как создать пользовательскую панель прогресса в Android? Фрагменты внутри фрагментов Как я могу получить текущий цвет фона панели действий текущей темы? Кросс-компиляция GCC с помощью newlib для ARM: как указать параметры GCC, такие как -march? JavaPoet + Android Studio "addModifiers (модификатор) нельзя применить к модификатору" В чем разница между Bitmap и Drawable в Android? Android Picasso library, Как добавить заголовки аутентификации? Как добавить кнопку меню без панели действий? Не удается обновить плагин Android Studio gradle 1.4 TextView – как сделать вторую строку с отступом Сделайте SurfaceView большим, чем экран (установка предварительного просмотра камеры на SurfaceView больше, чем на дисплее) Android – Eclipse: Keystore был изменен, или пароль был неправильным Как скрыть представление программно? Библиотека FTDI D2XX открыла устройства с несколькими интерфейсами, используя вызов openByUSBDevice ()

Как работает MenuItem.SHOW_AS_ACTION_IF_ROOM?

Начало работы с ActionBar …

Для MenuItem.SHOW_AS_ACTION_IF_ROOM в документации написано:

Покажите этот элемент как кнопку в панели действий, если система решит, что для этого есть место.

Мой вопрос в том, как система решает, есть ли место, и могу ли я повлиять на это решение?

В моем случае у меня есть несколько пунктов меню, которые будут отображаться как кнопки действий – если есть достаточно места. На меньших экранах они занимают достаточно места, чтобы сделать название панели действий эллипсисом. Я бы предпочел, чтобы в этом случае они перешли в действие, вместо того, чтобы скрывать заголовок.

PS. Я использую ActionBarSherlock и не проверял, действует ли родной ActionBar точно так же. Если родной ActionBar не позволяет элементам «if-room» слишком сильно сокращать заголовок, тогда остынь, я пойду на поиск ошибки в ActionBarSherlock.

Solutions Collecting From Web of "Как работает MenuItem.SHOW_AS_ACTION_IF_ROOM?"

Согласно официальному руководству по дизайну Android ( http://developer.android.com/design/patterns/actionbar.html ):

Емкость панели действий контролируется следующими правилами:

  • Кнопки действий в основной панели действий могут не занимать более 50% ширины полосы. Кнопки действий на нижних панелях действия могут использовать всю ширину.
  • Ширина экрана в независимых от плотности пикселей (dp) определяет количество элементов, которые будут помещаться в основную панель действий:
    • Меньше 360 дп = 2 значка
    • 360-499 dp = 3 иконки
    • 500-599 dp = 4 значка
    • 600 dp и больше = 5 значков

Хорошо, это было не так сложно понять, логика в ActionMenuPresenter.java

Кажется, что:

  • Кнопкам действия не разрешено принимать более половины горизонтального пространства
  • Количество отображаемых кнопок действий также ограничено на основе ширины экрана ( R.integer.abs__max_action_buttons )
  • Предел числа может быть разбит, если действия принадлежат одной и той же группе, ограничение по ширине не может – если группа нарушает ограничение ширины, вся группа переходит в переполнение.

Я пользователь ActionBarSherlock, я могу предложить вам просмотреть источники Wharton для ответа.

Насколько я понимаю, у него есть свой макет с методом onMeasure, где он проверяет, можно ли поместить заголовок, логотип и элементы меню в панель действий, указав их сводную ширину.

Вы можете проверить его логику, если я могу доверять своей памяти, в классе BaseMenuPresenter.