Android M源碼中使用android.support.design包的TabLayout

最近做6.0的移植工作,想要更好的保留Google推出的Material Design風格(其實是以前的風格太醜了。。),爲此用到了android.support.design包(以下簡稱design包)的控件,發現各種問題,花了一下午時間梳理清了。

踩坑過程就不贅述了,直接列出需要改動的地方:
1、修改Android.mk,要點:
a、需要添加android-support-v7-appcompat,因爲design是依賴v7包的;
b、將design包和v7包一起打包到工程中;
c、將design包和v7包的res路徑添加到LOCAL_RESOURCE_DIR中;

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, $(src))
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res \
    frameworks/support/v7/appcompat/res \
    frameworks/support/design/res

LOCAL_PACKAGE_NAME := SafeMode
LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 android-support-v7-appcompat android-support-design

LOCAL_AAPT_FLAGS := \
--auto-add-overlay \
--extra-packages android.support.design \
--extra-packages android.support.v7.appcompat

include $(BUILD_PACKAGE)

如果Android.mk沒有寫對,就是各種編譯不通過,xxx can’t find referenced class xxxx,讓我一直在Proguard上浪費時間,其實是mk的問題-。-||

經過以上步驟,就可以正常的把apk編譯出來了。但是在我運行時竟然crash了。
這裏寫圖片描述
一番折騰,找到了一個還沒理解爲啥這麼改的辦法:
2、主題中需要對colorAccent屬性重設?!

以上,就可以正常使用TabLayout了。

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