APK.錯誤解決_Theme.AppCompat.Light相關


1、相關關鍵字:Theme.AppCompat.Light,android:theme="@style/AppTheme" 等

  ZC: 我的 Android.rar(20150906 和 20150907)貌似里面已經帶有 AppCompat(F:\ZC_____Android_Qt\_Run_Env\Android\android-sdk\extras\android\support\v7\appcompat)【就算20150906沒有,20150907的應該會有吧~~】

    於是我只要 將AppCompat 導入到Eclipse工程目錄中,然后 哪個工程需要 哪個工程的"library"中"Add.."上AppCompat就行了。

 

2、Android關於Theme.AppCompat相關問題的深入分析 - 簡書.html(https://www.jianshu.com/p/6ad7864e005e

 

 

Android關於Theme.AppCompat相關問題的深入分析

96 
小池laucherish 
2015.08.20 09:34* 字數 1464 閱讀 71291評論 20

先來看這樣一個錯誤:

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

對於這個錯誤,相信大部分Android開發者都遇到過,可能很多朋友通過百度或者Google已經解決了這個問題,但是網上大部分都只給出了解決方法。

正所謂知其然,知其所以然,本文將從此問題出發,深入分析探討導致此問題的原因、由其衍生出來的一系列問題及其解決方案。

Android Support Library

The Android Support Library package is a set of code libraries that provide backward-compatible versions of Android framework APIs as well as features that are only available through the library APIs.

Android的SDK版本很多,新的SDK版本包含了很多新的特性,為此Google官方提供Android Support Library package來保證高版本SDK的向下兼容。通過使用此包,可以讓擁有最新SDK特性的應用運行在API lever 4(即Android 1.6) 及更高版本的設備之上。

  • v4 Support Library
    此包用在API lever 4(即Android 1.6)及更高版本之上。它包含了較多的內容,使用非常廣泛,例如:Fragment,NotificationCompat,LoadBroadcastManager,ViewPager,PageTabStrip,Loader,FileProvider 等。
  • v7 Support Libraries
    此包是針對API level 7(即Android 2.1)及以上版本而設計的,但是v7是要依賴v4這個包的,v7支持了Action Bar以及一些Theme的兼容。

Note: v7 appcompat library
v7 appcompat library 是包含在 v7 Support Libraries里面的一個包,正是此包增加了Action Bar 用戶界面的設計模式,並加入了對material design 的支持,是我們使用最多的一個兼容包。

  • v13 Support Library
    此包是針對API level 13(即Android 3.2)及更高版本設計的,一般我們都不常用,平板開發中能用到,這里就不過多介紹了。
  • v17 Preference Support Library for TV
    看名字就知道了,此包主要是為了TV設備而設計。

Android Theme

  • Hoho Theme

在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的兼容。

  • Material Design Theme

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。

問題分析

由此可以得出以下情形會導致本文一開始提出的問題。

  • 項目使用的是Theme.AppCompat主題,具體表現為
    項目values目錄styles.xml文件里面style為
<resources> <style name="AppBaseTheme" parent="Theme.AppCompat.Light"></style> <style name="AppTheme" parent="AppBaseTheme"></style> </resources> 

AndroidManifest.xml文件里面

android:theme="@style/AppTheme"
  • 項目支持的最小SDK小於API 14(即Android4.0),具體表現為
    AndroidManifest.xml文件里面,minSdkVersion<14,比如
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="23" /> 
  • 項目沒有導入android-support-v7-appcompat兼容包。

解決方案

此時的解決方法有如下幾種:

  1. 既然沒有找到Theme.AppCompat.Light主題,那么我就不使用此主題。此時將項目values,values-v11,values-v14目錄下的styles.xml文件里面的style都改為
<resources> <style name="AppBaseTheme" parent="android:Theme.Light"></style> <style name="AppTheme" parent="AppBaseTheme"></style> </resources> 
  1. 那如果沒有找到Theme.AppCompat.Light主題,而我們又想要使用最新的主題效果呢,還有種方法就是將AndroidManifest.xml文件里面,minSdkVersion改成14,比如
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" /> 

此時再將項目values,values-v11,values-v14目錄下的styles.xml文件里面style都改為

<resources> <style name="AppBaseTheme" parent="android:Theme.Holo.Light"></style> <style name="AppTheme" parent="AppBaseTheme"></style> </resources> 
  1. 當然以上都不是最好的方法,只是提供一種思路。最好的方法就是導入android-support-v7-appcompat庫。下面具體介紹:
    3.1 通過Android SDK Manager下載最新的Android Support Library。


     
    img1.jpg

    下載完成之后,可以在以下目錄找到AppCompat library

android-sdk/extras/android/support/v7/appcompat

3.2 將此目錄下的項目導入到Eclipse中


 
img2.jpg

3.3 右鍵點擊我們的Android項目,選擇Properties,左側選擇Android,在下方Library框里點擊Add,最后選擇appcompat_v7,確定。
此時問題就解決了。


 
img3.jpg

但在以上3.2導入appcompat_v7到Eclipse之后,有可能還會出現錯誤提示,比如
appcompat_v7\res\values-v23\styles_base.xml:20: error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.

出現此問題的原因是appcompat_v7已經更新到了最新版本並且高於編譯環境的SDK版本,此時在Android SDK Manager將SDK及編譯工具更新到最高版本


 
img4.jpg

升級完成之后右鍵點擊appcompat_v7項目,選擇Properties,選擇Project Build Target 為最新版本,這樣就OK了。

 
img5.jpg

通過以上的分析,相信朋友們以后再遇到AppCompat相關的問題應該不再是問題了。歡迎大家留言討論。

 

3、

4、

5、


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM