Android – Using AppCompat ‘layout_behavior’ with ‘@string/appbar_scrolling_view_behavior’ throws exception

androidandroid-appcompat

I have a strange probem using the AppCompat Lib 22.2 with the new introduced: layout_behavior

If i use it with the value "@string/appbar_scrolling_view_behavior" , as described here Android Design Support Lib the application terminates with the following exception:

Could not inflate Behavior subclass android.support.design.widget.Settings
     Caused by: java.lang.RuntimeException: Could not inflate Behavior subclass android.support.design.widget.Settings
     Caused by: java.lang.ClassNotFoundException: android.support.design.widget.Settings
     Caused by: java.lang.NoClassDefFoundError: android/support/design/widget/Settings
     Caused by: java.lang.ClassNotFoundException: android.support.design.widget.Settings

If i change to :

app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior"

everything works fine.

What i'm missing ?

Best Solution

For others who encounter this exception and use proguard - you need to add following proguard rules:

-keep class android.support.design.widget.** { *; }
-keep interface android.support.design.widget.** { *; }
-dontwarn android.support.design.**

or if you don't want to keep all of the design library components you can use:

-keepattributes *Annotation*
-keep public class * extends android.support.design.widget.CoordinatorLayout.Behavior { *; }
-keep public class * extends android.support.design.widget.ViewOffsetBehavior { *; }