с текстом в разделенной панели действий

У меня проблема: если ActionItem имеет и значок, и текст, а ActionBar разделен, он будет отображать только значок, даже если showAsAction="always|withText".

Есть ли способ заставить текст отображаться?


person keyboardr    schedule 05.12.2011    source источник


Ответы (2)


withText — подсказка системе. На устройствах или конфигурациях с ограничением по ширине система может проигнорировать его.

person adamp    schedule 05.12.2011
comment
Правильно, но даже если это единственный элемент в разделении ActionBar (то есть он имеет всю ширину экрана 4,65 дюйма), он все равно не отображается. И если значка нет, он покажет текст. - person keyboardr; 05.12.2011
comment
Это правильно. Количество элементов или их измеренный размер не влияет на решение системы отображать текст + значок одновременно. Он полностью зависит от конфигурации устройства. (Размер экрана, ориентация и т. д.) - person adamp; 06.12.2011
comment
Был ли когда-нибудь случай, когда текст + значок отображались в разделении ActionBar? - person keyboardr; 07.12.2011
comment
Не в текущих реализациях, но это может не всегда быть верным в будущем. Панель действий обычно следует рассматривать как семантическую конструкцию — дайте ей столько информации о вашем приложении, сколько вам нужно, и она представит ее таким образом, который соответствует системным соглашениям на текущем устройстве. - person adamp; 08.12.2011
comment
Отличный ответ. Разочаровывает то, что на самом деле он не измеряет доступную ширину. - person SharkAlley; 01.07.2012

Недавно у меня была такая же проблема, и, как уже ответил adamp, невозможно заставить текст отображаться с опцией «withText».

На самом деле это можно сделать с помощью настраиваемого представления на панели действий, например, на экране «Редактировать / создать событие» Календаря Google (кнопка «Отмена» и «Сохранить» на панели действий, обе с текстом).

Проверьте источник Календарей Google о том, как это делается

https://android.googlesource.com/platform/packages/apps/Calendar

есть макет для пользовательского представления панели действий в

res/layout/edit_event_custom_actionbar.xml

Пожалуйста, также проверьте соответствующие стили

это применяется к панели действий в классе EditEventFragment, метод onCreateView

if (mUseCustomActionBar) {
     View actionBarButtons = inflater.inflate(R.layout.edit_event_custom_actionbar,
             new LinearLayout(mContext), false);
     View cancelActionView = actionBarButtons.findViewById(R.id.action_cancel);
     cancelActionView.setOnClickListener(mActionBarListener);
     View doneActionView = actionBarButtons.findViewById(R.id.action_done);
     doneActionView.setOnClickListener(mActionBarListener);

     mContext.getActionBar().setCustomView(actionBarButtons);
 }

Там же назначаются обработчики событий.

Параметр отображения панели действий задается в классе EditEventActivity, метод onCreate:

getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,                      
         ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_HOME|
         ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_CUSTOM);

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

Надеюсь это поможет

person Hans Hohenfeld    schedule 18.07.2012
comment
Я не могу открыть ссылку? Я не знаю, что Календарь Google является открытым исходным кодом. - person molikto; 10.08.2012