Преобразование меню Android и панели действий

В Android появилась новая концепция:

http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html

Но мне непонятно. У меня есть приложение, которое поддерживается от 1.6 до 4.0. И я хочу следовать новой концепции, но я не могу установить свойство showAsAction в меню xml, потому что:

"Не найден идентификатор ресурса для атрибута showAsAction в пакете android"

Это нормально, потому что в документе есть:

«Примечание. Атрибут android:showAsAction доступен только в Android 3.0 (уровень API 11) и выше».

Как я могу установить меню, которое в версии 3.0 является простым меню, а в версии выше 3.0 - в виде панели действий?


person Robertoq    schedule 31.01.2012    source источник


Ответы (4)


Согласно сообщению в блоге, которым вы поделились:

Сводка

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

Установите для targetSdkVersion значение 14, а затем протестируйте приложение на Android 4.0.

Добавьте showAsAction="ifRoom" в пункты меню , которые вы хотите отображать на панели действий.

Если ActionBar не работает для вашего приложения, вы можете удалить его с помощью Theme.Holo.NoActionBar или Theme.DeviceDefault.NoActionBar.

Итак, все, что вам действительно нужно сделать, это:

Сначала укажите минимальную и целевую версию SDK в файле AndroidManifest.xml следующим образом:

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="14" />

Во-вторых, добавьте showAsAction="ifRoom" к элементам меню в файле menu.xml.

Теперь запустите ваше приложение в Honeycomb или Ice Cream Sandwich, и вы должны увидеть свое меню на панели действий. Ваше приложение должно по-прежнему работать в версиях до Android 3.0.

person Luis    schedule 25.02.2012

Перейдите к свойствам проекта в Eclipse (щелкните проект правой кнопкой мыши и выберите "Свойства"), затем перейдите в раздел Android и измените Project Build Target на Android 4.0. Это нужно сделать, чтобы система сборки распознала showAsAction.

Не беспокойтесь, что ваш проект не запустится на Android ниже 4.0, вы все равно можете запустить его, пока не вызовете класс или метод, доступные только на 4.0.

person Randy Sugianto 'Yuku'    schedule 31.01.2012
comment
СНОВА: я попробовал ваше предложение, и после этого я достиг свойства showAsAction, и я также мог проверить версию: if (Build.VERSION.SDK_INT ›= Build.VERSION_CODES.HONEYCOMB) { ActionBar actionBar = getActionBar();} SGS2 с 2.3, а в моих эмуляторах только с 4.0, поэтому эмуляторы с более старой версией в списке не появились. Боюсь проблем с совместимостью в Маркете, что моя программа будет доступна только на машинах 4.0. Или это зависит от свойства minSdkVersion? - person Robertoq; 31.01.2012
comment
Доступность на рынке зависит от minSdkVersion, а не от цели. - person Randy Sugianto 'Yuku'; 06.02.2012

Вы можете использовать Build.VERSION, чтобы делать что-то другое в каждой версии。 Некоторым нравится Build.VERSION.SDK_INT<Build.VERSION_CODES.HONEYCOMB

person apex yuan    schedule 31.01.2012

Вы можете использовать некоторые технологии ОС для предоставления панели действий в приложениях с уровнем API ниже 11.

Рассмотрите возможность использования ActionBarSherlock. Вы можете просто добавить его как проект библиотеки в свой проект, и если вы не установите тему Шерлока, она не будет отображать панель действий (если вы не хотите ее показывать), но вы можете пометить свои пункты меню с помощью «showAsAction». ". На устройствах с уровнем API выше 10 обычно отображается панель действий с вашими пунктами меню.

person Orest    schedule 31.01.2012