android:Theme.Material.Light需要API级别21(当前最小值为8)

时间:2014-11-18 08:47:14

标签: android android-5.0-lollipop android-theme material-design

我想在我的应用程序中使用Material Theme,其最低sdk版本为8.根据文档 - "材料主题仅适用于Android 5.0(API级别21)及更高版本。 v7支持库为主题提供了一些小部件的材料设计样式,并支持自定义调色板。"如果我在项目中添加v7支持库,这是否意味着我可以使用它?因为添加此库后我收到以下错误:

  

android:Theme.Material.Light需要API级别21(当前最小值为8)。

或者我理解错了什么?任何建议将不胜感激。提前谢谢。

4 个答案:

答案 0 :(得分:41)

为此你需要有2个值文件夹。

默认存在,另一个,你必须在你的res文件夹中创建并命名为values-v21。

在styles.xml文件夹的styles.xml中,使用Material theme以外的主题 在您创建的values-v21文件夹的styles.xml中,使用Material theme。

Android手机会自动拾取它支持的styles.xml。如果手机支持Material Design(棒棒糖设备),您的应用将使用素材主题(值-21文件夹)。

如果它没有(在运行较旧的Android版本的手机中),将使用默认值文件夹。

答案 1 :(得分:33)

您需要使用android:theme="@style/Theme.AppCompat.Light"主题来获取材料设计。

确保你的分数是8,你的目标是21.你还在使用构建工具/ sdk 21。

答案 2 :(得分:25)

Pedro Oliveira is right关于Theme.AppCompat,但该答案中缺少一些重要信息。

来自Android团队的Chris Banes撰写的一篇名为 appcompat v21: material design for pre-Lollipop devices! 的博文可能最能解答如何在21之前获得API级别的Material Theme的问题。

总结一下,您需要appcompat-v7 dependency

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

之后,对于黑暗版本作为基本主题,请使用:

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

对于轻型版本:

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

如果您是AppCompat的新手,您需要了解一些事项,例如:

  

您的所有活动必须从 ActionBarActivity *延伸。它延伸   来自v4支持库的FragmentActivity,因此您可以继续   使用片段。

*注意:最近,ActionBarActivity已被弃用,转而使用AppCompatActivity

但你真的应该阅读那篇博文的整个设置部分! (有关工具栏与操作栏以及some of the comments的信息也是您不应该错过的。)

答案 3 :(得分:1)

在NameActivity.java文件中导入以下内容:

import android.support.v7.widget.Toolbar;

评论上一个:

//import android.widget.Toolbar;

有了这个问题就解决了。