在KitKat上使用Android L材质设计

在KitKat上使用Android L材质设计,android,gradle,android-studio,android-5.0-lollipop,Android,Gradle,Android Studio,Android 5.0 Lollipop,阅读Android L Developer Preview()的兼容性部分,我发现我可以使用L-sdk创建一个应用程序,也可以在旧的sdk(如KitKat)上运行它 我已经使用Android L sdk创建了一个新项目,并配置了“build.gradle”,如本文所述: 我尝试了两种配置: 有问题的提议给了我这个错误: pkg:/data/local/tmp/com.example.{my user name}.materialapp 失败[安装\u失败\u旧的\u SDK] 答案中的那个给了

阅读Android L Developer Preview()的兼容性部分,我发现我可以使用L-sdk创建一个应用程序,也可以在旧的sdk(如KitKat)上运行它

我已经使用Android L sdk创建了一个新项目,并配置了“build.gradle”,如本文所述:

我尝试了两种配置:

  • 有问题的提议给了我这个错误:

    pkg:/data/local/tmp/com.example.{my user name}.materialapp
    失败[安装\u失败\u旧的\u SDK]

  • 答案中的那个给了我错误的答案

我搜索了其他关于StackOverflow的问题,但找不到解决方案

解决方案: Android L预览材质样式只能在运行Android L的设备上使用。
“兼容性”只是一个预览,未启用。

您必须创建两个不同的styles.xml文件,并使用相同的名称将其放入不同的文件夹中

第一个,将在这里:

res/styles.xml
res/values-v21/styles.xml
并且不会参考材料主题(使用全息主题):

所以我会有这样的想法:

<style name="AppTheme" parent="android:Theme.Holo.Light"></style>
将包含对新材料主题的引用,并将具有:

<style name="AppTheme" parent="android:Theme.Material.Light"></style>


Android框架将根据设备支持的API自动使用正确的API(因此,在API 21设备上,它将使用材质,在所有其他设备上,它将使用您定义的任何其他内容)。

自最初的答案以来,这一点已经改变,因为谷歌在AppCompat库中发布了更好的材质设计支持(主要支持所有版本的Android)

此时,您应该将这些库用于所有开发,然后您将能够在所有应用程序中支持与材质设计相关的功能


以下是设置方法:

我已经有了两种不同的样式。xml:一种是values,另一种是values-v21。但是如果我尝试在我的Nexus 5(4.4.4)上部署应用程序,它会在android上崩溃:Theme.Material.light。它们都命名为“AppTheme”吗?没有拼写错误或不同的父项?没有拼写错误。父项相同。我刚刚尝试使用“build.gradle”与本文Vova.K评论中的内容类似,但它在
android:Theme.Material.Light
上给出了错误,表示错误:检索项目的父级时出错:未找到与给定名称“android:Theme.Material.Light”匹配的资源。可能您没有链接正确的支持库?您需要确保具有预览版本(L).我敢打赌就是这样(如果我没记错的话,你还需要以某种方式选择加入预览组)。