web-dev-qa-db-fra.com

android: actionBarStyle requiert le niveau 11 de l'API

En utilisant le ActionBarSherlock in xml à:

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

J'ai eu cette erreur:

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

Je l'utilise pour le portage de mon application avec la barre d'action sur des périphériques 2.2.

Comment les utiliser ensemble:

 <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
 <item name="Android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
60
Jitendra

Vous devez utiliser uniquement:

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

comme vous pouvez obtenir l'erreur, vous avez Android:actionBarStyle disponible au niveau 11 de l’API.


Si vous souhaitez que votre ActionBar soit identique pour tous les niveaux d'API, vous devez créer différents dossiers pour le niveau d'API sélectionné et créer un nouveau style.xml/themes.xml fichiers dans ces dossiers.

Par exemple:

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

La deuxième chose à laquelle je peux penser est de faire attention aux thèmes que vous incluez à votre actuel à différents niveaux d’API.

Par exemple, pour le niveau d’API 8: vous utiliserez @style/Theme.Sherlock.Light.DarkActionBar et vous ne devrez utiliser que actionBarStyle. Lors du style de la barre d'action pour les API de niveau 14+, vous n'aurez pas besoin de actionBarStyle, car vous définissez probablement Holo.Light thème en tant que parent pour votre thème actuel, vous devrez donc utiliser Android:actionBarStyle.

76
hardartcore

Une autre option consiste à utiliser le tools:targetApi attribut, qui nécessite l’espace de noms tools. Cela agit de la même manière que le @TargetApi annotation que vous pouvez utiliser dans les fichiers 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>

Noter la xmlns:tools="http://schemas.Android.com/tools" dans le <resources>tag, comme requis.

146
InsanityOnABun

Vous pouvez simplement sélectionner des erreurs dans Eclipse et appuyer sur la touche "Supprimer". Ensuite, lancez le projet et cela fonctionnera.

Vous devez supprimer ces erreurs chaque fois que vous modifiez votre code XML.

7
Timothy T.

Cela dépend de la version du SDK que vous souhaitez cibler:

Cible inférieure à 11:

À votre AndroidManifest.xml utilisation:

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

x quelque chose entre 8-10 (dépend de votre code)

À votre style, utilisez:

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

Ciblez n'importe quel appareil:

À votre AndroidManifest.xml utilisation:

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

16 utilisé à ActionBarSherlock exemple peut être supérieur ou égal à 11 (dépend de votre code)

A votre style, utilisez les deux:

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

le premier est pour le thème ActionBarSherlock et le deuxième pour utiliser le même thème dans Android les appareils qui prennent déjà en charge ActionBar

Edit: Pour effacer les avertissements de peluchage (soulignement rouge dans un fichier XML susceptible de s'afficher):

Clear Lint Warnings

7
madlymad