2013-10-03 6 views
0

Я пытаюсь поддерживать устройства до уровня API 9 с помощью библиотеки AppCompat. Я пытаюсь использовать ActionBar, используя example theme от Google, но он продолжает говорить мне, что любой элемент с именем android: action * requires API level 11 (current min is 9). Я нацелен на 18. Если я использую материал непосредственно из примера, почему он ломается? И может ли кто-нибудь помочь мне разобраться, как к теме ActionBar использовать библиотеку AppCompat от уровня API 9?Theming AppCompat ActionBar

+0

Что именно ломается? И не имеет значения, на что вы нацеливаетесь, и что имеет значение для вашего минимального уровня API. – Szymon

+0

Я хочу иметь возможность темы Actionbar на уровне API ниже 11. Пример говорит, что он должен работать для 2.1 (API 7) и выше. – CaseyB

ответ

0

android:action* В элементах доступен только с API 11 и выше. Чтобы поддерживать разные уровни API, Android содержит различные каталоги values. Если вы посмотрите на структуру папок вашего проекта, вы, скорее всего, увидите каталоги для res/values и res/values-11 и, возможно, несколько других. Как вы могли догадаться, 11 означает API 11, что означает, что темы, доступные только в API 11 и выше, должны быть включены здесь. Каталог values является вашим базовым.

Поэтому для вашего примера вам необходимо разделить файл тем на два разных. Детали, содержащие android:action*, должны находиться в файле тем в папке values-11, а остальные могут оставаться в базе values. Android заботится о том, чтобы автоматически выбрать подходящую тему.

Вы должны действительно прочитать this, особенно части, расположенные внизу, о применении тем. В нем обсуждается, как вы можете применять темы к различным уровням API.

0

Функция, которую вы пытаетесь использовать, доступна только по API 11 вверх. Вы не сможете использовать устройства, имеющие уровень API 9, как вы хотели.

требует уровень API 11 (ток мин составляет 9)

Вы можете запустить пример в устройствах с Android 3.0 и выше, но для этого вам придется изменить свой файл манифеста minSdkVersion по меньшей мере, 11.

<uses-sdk 
    android:minSdkVersion="11" 
    android:targetSdkVersion="18" /> 
+0

Я понимаю, что означает ошибка. Я спрашиваю, как обойти это без увеличения моего minSdkVersion. – CaseyB

0

Попробуйте удалить все элементы с android:action* и оставить только те, с action* (без android имен).

Это работает для меня, но я получил свой стиль от этого замечательного генератора стиля для панели действий: http://jgilfelt.github.io/android-actionbarstylegenerator/

Смежные вопросы