FloatingActionButton中的ClassCastException

Shi*_*jil -4 android floating-action-button

在将com.android.support:design lib更新为24.2.0之后,在android.support.design.widget.FloatingActionButton中得到了ClassCastException.它在lib版本24.1.1中正常工作

 java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.support.design.widget.CoordinatorLayout$LayoutParams
   at android.support.design.widget.FloatingActionButton$Behavior.isBottomSheet(FloatingActionButton.java:597)
   at android.support.design.widget.FloatingActionButton$Behavior.onDependentViewChanged(FloatingActionButton.java:589)
   at android.support.design.widget.FloatingActionButton$Behavior.onDependentViewChanged(FloatingActionButton.java:528)
   at android.support.design.widget.CoordinatorLayout.offsetChildToAnchor(CoordinatorLayout.java:1564)
   at android.support.design.widget.CoordinatorLayout.onChildViewsChanged(CoordinatorLayout.java:1233)
   at android.support.design.widget.CoordinatorLayout$OnPreDrawListener.onPreDraw(CoordinatorLayout.java:1812)
   at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944)
   at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2000)
   at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1084)
   at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5990)
   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
   at android.view.Choreographer.doCallbacks(Choreographer.java:580)
   at android.view.Choreographer.doFrame(Choreographer.java:550)
   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
   at android.os.Handler.handleCallback(Handler.java:739)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:135)
Run Code Online (Sandbox Code Playgroud)

sJy*_*sJy 8

问题似乎是最新的支持库版本24.2.0.将锚设置FloatingButton为不是其父项的直接子项的视图CoordinatorLayout会导致此问题.

根据Android开源项目 - 问题跟踪器,这是一个已知问题.您可以在FAB上看到标记为24.2.1的未来版本的问题无法再锚定到CoordinatorLayout的间接子项.

报告问题中的评论可能的解决方法是

  • 设置FloatingActionButton直接子视图的锚视图Coordinatorlayout.

要么

  • 将您正在设置的视图包装为FloatinActionButton新内部的锚点CoordinatorLayout

来自Android开源项目 - 问题跟踪器

状态:FutureRelease

标签:目标支持-24.2.1