60 votes

Android:actionBarStyle nécessite le niveau 11 de l'API

Pendant l'utilisation du ActionBarSherlock en xml à :

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

J'ai obtenu 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 les appareils 2.2.

Comment utiliser les deux ensemble :

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

146voto

InsanityOnABun Points 1225

Une autre option consiste à utiliser le tools:targetApi qui requiert l'attribut tools espace de noms. Cette fonction agit de manière similaire à la fonction @TargetApi 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>

Notez le xmlns:tools="http://schemas.android.com/tools" en el <resources> comme il se doit.

76voto

Android-Developer Points 6542

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.

EDIT : Si vous voulez être capable de styliser votre ActionBar pour que l'apparence soit la même dans tous les niveaux d'API, vous devez créer des dossiers différents pour le niveau d'API sélectionné et créer de nouveaux fichiers style.xml / themes.xml 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+

Second EDIT : La deuxième chose à laquelle je peux penser est de faire attention aux thèmes que vous incluez à votre thème actuel à différents niveaux d'API. Par exemple pour l'API LVL 8 : vous utiliserez @style/Theme.Sherlock.Light.DarkActionBar et vous devrez utiliser uniquement actionBarStyle . Pour styliser la barre d'action pour l'API LVL 14+ vous n'aurez pas besoin de actionBarStyle parce que vous allez probablement mettre Holo.Light comme parent de votre thème actuel, donc dans cette situation vous devrez utiliser android:actionBarStyle .

7voto

madlymad Points 2384

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

Ciblez les devises inférieures à 11 :

A votre AndroidManifest.xml utiliser :

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

x entre 8 et 10 (en fonction de votre code)

A l'usage de votre style :

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

Ciblez n'importe quel appareil :

A votre AndroidManifest.xml utiliser :

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

16 utilisés à 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 1er est pour ActionBarSherlock et le second est destiné à l'utilisation du même thème sur les appareils Android qui prennent déjà en charge le thème de l'utilisateur. ActionBar

Editar: Pour effacer les avertissements de Lint (soulignement rouge dans le fichier XML qui peut apparaître) :

Clear Lint Warnings

7voto

Timothy T. Points 327

Vous pouvez simplement sélectionner les erreurs dans Eclipse et appuyer sur votre touche "Delete". Ensuite, il suffit d'exécuter le projet pour qu'il fonctionne.

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

0voto

mihai71 Points 49

Dans mon cas, il semble que les paramètres HTTPProxy dans Android aient été effacés après la mise à jour. Je les ai modifiés et cela a fonctionné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X