it-swarm.com.ru

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>
60
Jitendra

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

<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.

76
hardartcore

Другой вариант - использовать атрибут 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>, так как это необходимо.

146
InsanityOnABun

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

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

7
Timothy T.

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

Цель разрабатывается ниже 11:

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

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

х что-нибудь между 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>

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

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

Clear Lint Warnings

7
madlymad