感觉 Google 就是坑啊,放出的 Design Support Library 有各种 bug 已经不是第一次了……其实一旦接受了这个设定,也感觉萌萌哒(误)
然后咧,这一次,如果 SnackBar.make() 里的 root view 含有 AppBarLayout 的话,滑动删除 SnackBar 就会导致 NullPointerException = =
搜索了各种资料,终于在 stackoverflow 上找到解决方案了,非常简单
首先新建一个类继承 AppBarLayout.Behavior 并重写 onInterceptTouchEvent 方法
public class AppBarLayoutBehavior extends AppBarLayout.Behavior {
@Override
public boolean onInterceptTouchEvent(CoordinatorLayout parent, AppBarLayout child,
MotionEvent ev) {
return !(parent != null && child != null && ev != null) || super
.onInterceptTouchEvent(parent, child, ev);
}
}
然后让自己的 AppBarLayout 使用我们重写后的 Behavior 就好啦
((CoordinatorLayout.LayoutParams) findViewById(R.id.appbar).getLayoutParams())
.setBehavior(new AppBarLayoutBehavior());