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

PPD*_*PPD 40 android android-theme material-design android-5.0-lollipop

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

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

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

Hir*_*bar 41

为此,您需要有2个值文件夹.

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

在styles.xml文件夹的styles.xml中,使用除材质主题以外的主题.在您创建的values-v21文件夹的styles.xml中,使用材质主题.

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

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


Ped*_*ira 33

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

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


Jon*_*nik 25

佩德罗·奥利维拉是正确与问候Theme.AppCompat,但一些基本的信息是这个问题的答案失踪.

一篇名为appcompat v21的文:前Lollipop设备的材料设计!来自Android团队的Chris Banes可能最能回答如何在21之前获得API级别的Material Theme的问题.

总而言之,您需要appcompat-v7依赖:

dependencies {
    ...
    compile "com.android.support:appcompat-v7:21.0.3"
}
Run Code Online (Sandbox Code Playgroud)

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

<style name="AppTheme" parent="Theme.AppCompat">
</style>
Run Code Online (Sandbox Code Playgroud)

对于轻型版本:

<style name="AppTheme" parent="Theme.AppCompat.Light">
</style>
Run Code Online (Sandbox Code Playgroud)

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

您的所有活动都必须从ActionBarActivity*扩展.它从v4支持库中的FragmentActivity扩展,因此您可以继续使用片段.

*注意:最近,ActionBarActivity已被弃用,转而支持AppCompatActivity.

但你真的应该阅读该博客文章的整个安装部分!(有关工具栏与操作栏的信息,以及一些您可能不应错过的评论.)