android:Theme.Material.Light 需要 API 级别 21(当前最低为 8)
Posted
技术标签:
【中文标题】android:Theme.Material.Light 需要 API 级别 21(当前最低为 8)【英文标题】:android:Theme.Material.Light requires API level 21 (current min is 8) 【发布时间】:2015-01-15 09:18:35 【问题描述】:我想在我的应用程序中使用材料主题,其最低 sdk 版本为 8。根据文档-“材料主题仅在 android 5.0(API 级别 21)及更高版本中可用。v7 支持库为主题提供材料一些小部件的设计风格并支持自定义调色板。”如果我在项目中添加 v7 Support Libarary 是否意味着我可以使用它?因为添加这个库后我得到了以下错误:
。
或者我理解错了什么?任何建议将不胜感激。提前致谢。
【问题讨论】:
在那个页面上,他们说要查看this page,它会告诉您可以使用哪个 Theme.AppCompat。 yaa support lib 支持版本 8 但你必须用 21 编译 @JeremyMiller 感谢您提供的链接,我错过了。 【参考方案1】:为此,您需要有 2 个值文件夹。
一个默认存在,另一个,您必须在 res 文件夹中创建并将其命名为 values-v21。
在默认值文件夹的styles.xml 中,使用Material 主题以外的主题。 在您创建的 values-v21 文件夹的 styles.xml 中,使用 Material 主题。
Android 手机会自动拾取它支持的styles.xml。如果手机支持 Material Design(Lollipop 设备),您的应用将使用 Material 主题(values-21 文件夹)。
如果不是(在运行旧 Android 版本的手机中),将使用默认值文件夹。
【讨论】:
还必须制作一个相同的 Strings.xml 吗?似乎有点多余?【参考方案2】:您需要使用android:theme="@style/Theme.AppCompat.Light"
主题来获取材料设计。
确保您的最小值为 8,目标为 21。并且您使用的是 build tools/sdk 21。
【讨论】:
我想我更喜欢这个答案而不是接受的答案。【参考方案3】: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。
但是您真的应该阅读该博客文章的整个设置部分! (Toolbar vs Action Bar的信息,some of the comments也是你不可错过的。)
【讨论】:
感谢您补充:) 使用 Theme.AppCompat.Light.NoActionBar 并从 android.support.v4.app.FragmentActivity 扩展,它工作正常。我认为一旦添加了 ActionBar,从 ActionBarActivity 扩展的要求就会发挥作用。 是的,我引用的那个措辞不是最清楚的。如果不使用 Action Bar(或者 Toolbar 作为 Action Bar?),则不需要 ActionBarActivity。 不错的总结。谢谢!【参考方案4】:在您的 NameActivity.java 文件中导入以下内容:
import android.support.v7.widget.Toolbar;
评论上一条:
//import android.widget.Toolbar;
这样问题就解决了。
【讨论】:
我不认为这是对这里问题的回答。以上是关于android:Theme.Material.Light 需要 API 级别 21(当前最低为 8)的主要内容,如果未能解决你的问题,请参考以下文章