天天看點

關于Recyclerview自适應item寬高

今天發現原來的項目中一個Recyclerview,本來是自适應item寬高的,現在卻占滿螢幕,多次調試布局無果,之後查找發現,Recyclerview在後來的版本中有更新,源代碼中已經做了自适應處理了,而我引入的Recyclerview庫版本依然是23.0.1的,于是進行更新

我app的gradle裡的版本設定是提出來到外面的根gradle下的,這是它們的設定

ext{
    compileSdkVersion = 23
    buildToolsVersion = "25.0.2"
    support_library_version = "23.2.1"
}      

網上有人說隻要更新到23.2.1以上就行,那很簡單  support_library_version改成23.2.1就好了

呵呵,改完運作報錯

Error inflating class android.support.design.widget.CollapsingToolbarLayout

Caused by: android.view.InflateException: Binary XML file line #73: Error inflating class android.support.design.widget.CollapsingToolbarLayout

Caused by: java.lang.reflect.InvocationTargetException

........

........

Caused by: java.lang.NoSuchMethodError: No static method setLayoutDirection(Landroid/graphics/drawable/Drawable;I)V in class Landroid/support/v4/graphics/drawable/DrawableCompat; or its super classes (declaration of 'android.support.v4.graphics.drawable.DrawableCompat' appears in /data/app/com.miuhouse.yourcompany.daycare-2/split_lib_dependencies_apk.apk:classes5.dex)

網上似乎沒有詳細解釋,但看上去應該還是版本的問題

stackoverflow中有回答建議加上這句話

compile (‘com.android.support:support-v4:23.4.0‘){
  force = true;
}      

要是有什麼卵用的話也沒什麼好說的了

java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/os/BuildCompat;

............

............

Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.os.BuildCompat" on path: DexPathList.................

找不到類 這就錯得更離譜了,查了半天原因查不到,最後一怒之下,support_library_version直接改成25

特麼就好了,Recyclerview也自适應了,摔