使用ToolBar遇到的問題

Android 5.0 出來已經有一段時間了, 也出來更多新特性, 如"Material Design", 新控件等等

今天使用Toolbar的時候遇到了一系列問題, 記錄如下: 


1. 啓動app就崩潰, 錯誤信息: AppCompat does not support the current theme features

自定義Theme時直接繼承了Theme.AppCompat.Light
        要使用ToolBar的話, 需要繼承 Theme.AppCompat.Light.NoActionBar

由於使用ToolBar需要去掉ActionBar.


2. 啓動app就崩潰, 錯誤信息: A TaskDescription's primary color should be opaque

   信息很明顯, 就是style.xml中的"colorPrimary"必須是不透明的

android中八位十六進制的顏色前兩位就是定義透明度的, 從00~FF, 即完全透明到不透名, 此處直接寫FF


3. 繼承ActionBarActivity時, 發現ActionBarActivity有刪除線了, 也就是過期了, 建議使用AppCompatActivity

   可以看到ActionBarActivity是直接繼承了AppCompatActivity, 如下: 

package android.support.v7.app;

/**
 * @deprecated Use {@link android.support.v7.app.AppCompatActivity} instead.
 */
@Deprecated
public class ActionBarActivity extends AppCompatActivity {
}


4. 定義Theme時, "android:" 前綴, 到底哪個需要哪個不需要, 傻傻的分部清楚

一個基本原則就是: 屬性在系統中已經定義的需要"android:"前綴, 如果是在appcompat-v7中定義的, 就不需要前綴  (這個比較好解決, 因爲寫錯AndroidStudio會有提示)

可以看一看appcompat-v7中關於attr和style的定義, 下面是ToolBar用到的相關屬性: 

values/styles.xml文件


values-v21/styles.xml文件



5. 由於更新了SDK導致的編譯問題, 這個問題特別坑!!


ActionBarActivity


因爲使用了"Canary Channel"獲取了最新特性, 因此被當了小白.  AndroidStudio的穩定版的的build-tools命名和linux版本命名類似, 諸如21.0.0, 22.0.1.......之類的

而測試版的build-tools添加了字母, 諸如: "23.0.0 rc2", "23.0.0 rc3"之類. 穩定版的build-tools更新後原來的還會在你的磁盤上(SDK_HOME/build-tools/目錄下), 

是不會刪掉的. 然而測試版的build-tools會刪掉原來的, 那沒問題來了, 每個module下面的build.gradle文件中的指定的build-tools還是原來的build-tools沒有更新, 

原來的build-tools已經刪掉了!!

這還不是最坑的!! 我更改了build.gradle配置,  繼續編譯, 錯誤依舊!!! 折騰一番, 終於明白了, 所有module下的build.gradle全部要改過來

build.gradle指定build-tool的地方如下: 

要學習gradle, 請看這裏

如有錯誤之處, 歡迎指正大笑


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章