Android: actionBarStyle требует уровня API 11

При использовании ActionBarSherlock в xml по адресу:

<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>

Я получил эту ошибку:

android:actionBarStyle requires API level 11 (current min is 8) error

Я использую его для обратного переноса моего приложения с помощью панели действий на 2.2 устройства.

Как использовать их вместе:

 <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
 <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>

Ответ 1

Вы должны использовать только:

<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item> 

так как вы можете получить ошибку, у вас есть android:actionBarStyle, доступный на уровне API 11.


Если вы хотите, чтобы стиль ActionBar выглядел одинаково на всех уровнях API, вам нужно создать разные папки для выбранного уровня API и создать новые файлы style.xml/themes.xml в этих папках.

Например:

- res
  -- values
     -- styles.xml
     -- themes.xml // API LEVEL 8+
 -- values-v11
     -- styles.xml
     -- themes.xml // API LEVEL 11+
 -- values-v14
     -- styles.xml
     -- themes.xml // API LEVEL 14+

Вторая вещь, о которой я могу думать, - быть осторожным, какие темы вы включаете в свой текущий на разных уровнях API.

Например, для уровня API 8: вы будете использовать @style/Theme.Sherlock.Light.DarkActionBar, и вам придется использовать только actionBarStyle. При стилизации панели действий для уровня API 14+ вам не понадобится actionBarStyle, потому что вы, вероятно, установите тему Holo.Light как родительскую для вашей текущей, поэтому в этой ситуации вам придется использовать android:actionBarStyle.

Ответ 2

Другой вариант - использовать атрибут tools:targetApi, для которого требуется пространство имен tools. Это действует аналогично аннотации @TargetApi, которую вы можете использовать в java файлах.

<resources xmlns:tools="http://schemas.android.com/tools">

<style name="MyThemes.MyTheme">
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="android:actionBarStyle" tools:targetApi="11">@style/Widget.Styled.ActionBar</item>
</style>

</resources>

Обратите внимание на xmlns:tools="http://schemas.android.com/tools" в теге <resources>, как это требуется.

Ответ 3

Вы можете просто выбрать ошибки в Eclipse и нажать клавишу "Удалить". Затем просто запустите проект, и он будет работать.

Вы удаляете тезисы ошибок каждый раз, когда вы изменяете свой XML.

Ответ 4

Это зависит от того, какую версию SDK вы хотите настроить:

Целевые объекты ниже 11:

На вашем AndroidManifest.xml используйте:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="x" android:maxSdkVersion="10"/>

x что-нибудь между 8-10 (зависит от вашего кода)

В вашем стиле используйте:

<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>

Настроить любое устройство:

На вашем AndroidManifest.xml используйте:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" />

16, используемый в ActionBarSherlock, может быть любым большим или равным 11 (зависит от вашего кода)

В вашем стиле используйте оба:

<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item> 
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>

1-й для темы ActionBarSherlock, а второй предназначен для использования той же темы в устройствах Android, которые уже поддерживают ActionBar

Изменить: Очистить предупреждения Lint (красная подчеркивание в файле XML, который может отображаться):

Clear Lint Warnings