web-dev-qa-db-fra.com

android: Theme.Material.Light nécessite le niveau d'API 21 (la valeur minimale actuelle est de 8)

Je souhaite utiliser le thème du matériau dans mon application qui a une version sdk minimale de 8. Selon la documentation - "Le thème du matériau est uniquement disponible en Android 5.0 (API niveau 21) et au-dessus. Le v7 Les bibliothèques de support fournissent des thèmes avec des styles de conception de matériaux pour certains widgets et prennent en charge la personnalisation de la palette de couleurs. "Cela signifie-t-il que je peux l'utiliser si j'ajoute v7 Support Libarary dans mon projet? Parce qu'après avoir ajouté cette bibliothèque, j'ai eu l'erreur suivante:

Android: Theme.Material.Light nécessite le niveau d'API 21 (la valeur minimale actuelle est de 8).

Ou peut-être que j'ai compris quelque chose de mal? N'hésitez pas à nous faire part de vos suggestions. Merci d'avance.

40
PPD

Pour cela, vous devez avoir 2 dossiers de valeurs.

Un qui existe par défaut, et un autre, vous devez créer dans votre dossier res et le nommer valeurs-v21.

Dans le dossier valeurs par défaut, dans styles.xml, utilisez un thème autre que le thème Matériau. Dans le dossier styles.xml du dossier values-v21 que vous avez créé, utilisez le thème Matériau.

Le téléphone Android récupérera automatiquement le styles.xml qu'il prend en charge. Si le téléphone prend en charge Material Design (appareils Lollipop), votre application utilisera le thème Material (dossier values-21).

si ce n'est pas le cas (dans les téléphones exécutant une ancienne version Android), le dossier des valeurs par défaut sera utilisé.

41
Hirak Chhatbar

Vous devez utiliser Android:theme="@style/Theme.AppCompat.Light" thème pour obtenir une conception matérielle.

Assurez-vous que votre min est de 8 et que votre cible est de 21. Et vous utilisez des outils de construction/sdk 21.

33
Pedro Oliveira

Pedro Oliveira a raison en ce qui concerne Theme.AppCompat, mais certaines informations essentielles manquent dans cette réponse.

Un article de blog intitulé appcompat v21: conception de matériel pour les appareils pré-Lollipop! par Chris Banes du Android répond probablement le mieux à la question de savoir comment obtenir le thème Material pour les niveaux API avant 21.

Pour résumer, vous avez besoin de appcompat-v7 dépendance :

dependencies {
    ...
    compile "com.Android.support:appcompat-v7:21.0.3"
}

Après cela, pour la version sombre comme thème de base, utilisez:

<style name="AppTheme" parent="Theme.AppCompat">
</style>

Et pour la version légère:

<style name="AppTheme" parent="Theme.AppCompat.Light">
</style>

Et si vous débutez avec AppCompat, vous devez savoir certaines choses, telles que:

Toutes vos activités doivent s'étendre de ActionBarActivity*. Il s'étend de FragmentActivity à partir de la bibliothèque de support v4, vous pouvez donc continuer à utiliser des fragments.

* NB: plus récemment, ActionBarActivity a été déconseillé au profit de AppCompatActivity .

Mais vous devriez vraiment lire toute la section Configuration de ce billet de blog! (Les informations sur Toolbar vs Action Bar, et certains des commentaires sont également quelque chose que vous ne devriez probablement pas manquer.)

25
Jonik

Dans votre fichier NameActivity.Java, importez les éléments suivants:

import Android.support.v7.widget.Toolbar;

Commentez le précédent:

//import Android.widget.Toolbar;

Avec cela, le problème est résolu.

2
Arturo Castro