Android关于Theme.AppCompat相关问题的深入分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android关于Theme.AppCompat相关问题的深入分析相关的知识,希望对你有一定的参考价值。

参考技术A

先来看这样一个错误:

No resource found that matches the given name \'@style/Theme.AppCompat.Light\'

对于这个错误,相信大部分android开发者都遇到过,可能很多朋友通过百度或者Google已经解决了这个问题,但是网上大部分都只给出了解决方法。

正所谓知其然,知其所以然,本文将从此问题出发,深入分析探讨导致此问题的原因、由其衍生出来的一系列问题及其解决方案。

Android的SDK版本很多,新的SDK版本包含了很多新的特性,为此Google官方提供Android Support Library package来保证高版本SDK的向下兼容。通过使用此包,可以让拥有最新SDK特性的应用运行在API lever 4(即Android 1.6) 及更高版本的设备之上。

在4.0之前Android可以说是没有设计可言的,在4.0之后推出了Android Design,从此Android在设计上有了很大的改善,而在程序实现上相应的就是Holo风格,所以你看到有类似 Theme.Holo.Light Theme.Holo.Light.DarkActionBar 就是4.0的设计风格,但是为了让4.0之前的版本也能有这种风格怎么办呢?这个时候就不得不引用v7包了,所以对应的就有 Theme.AppCompat.Light Theme.AppCompat.Light.DarkActionBar ,如果你的程序最小支持的版本是API14(即Android 4.0),那么可以不用考虑v7的兼容。

Android在5.0版本推出了Material Design的概念,这是Android设计上又一大突破。对应的程序实现上就有 Theme.Material.Light Theme.Material.Light.DarkActionBar 等,但是这种风格只能应用在在5.0版本的手机,如果在5.0之前应用Material Design该怎么办呢?同样的引用appcompat-v7包,这个时候的 Theme.AppCompat.Light Theme.AppCompat.Light.DarkActionBar 就是相对应兼容的Material Design的Theme。

由此可以得出以下情形会导致本文一开始提出的问题。

AndroidManifest.xml文件里面

此时的解决方法有如下几种:

此时再将项目values,values-v11,values-v14目录下的styles.xml文件里面style都改为

3.2 将此目录下的项目导入到Eclipse中

3.3 右键点击我们的Android项目,选择Properties,左侧选择Android,在下方Library框里点击Add,最后选择appcompat_v7,确定。
此时问题就解决了。

出现此问题的原因是appcompat_v7已经更新到了最新版本并且高于编译环境的SDK版本,此时在Android SDK Manager将SDK及编译工具更新到最高版本

升级完成之后右键点击appcompat_v7项目,选择Properties,选择Project Build Target 为最新版本,这样就OK了。

通过以上的分析,相信朋友们以后再遇到AppCompat相关的问题应该不再是问题了。欢迎大家留言讨论。

纯净日报 https://github.com/laucherish/PureZhihuD
一个采用 RxJava + Retrofit + OkHttp 框架实现的开源软件

以上是关于Android关于Theme.AppCompat相关问题的深入分析的主要内容,如果未能解决你的问题,请参考以下文章

Theme.AppCompat.Light.DarkActionBar ActionBarActivity

Android : Theme.Holo VS Theme.AppCompat

Android 创建项目出现No resource found that matches the given name Theme.AppCompat.Light

You need to use a Theme.AppCompat theme (or descendant) with this activity.

在Theme.AppCompat.Light中添加图标

Android v21 Theme.Appcompat 颜色重音被忽略,对话框上没有填充