AppBarLayout中的懸浮部分我使用了MagicIndicator,我們的測試在實際的使用中發(fā)現,MagicIndicator置頂之后再滑動Fragment中的RecyclerView時,在RecyclerView還在向上慣性滑動的時候向下滑動MagicIndicator,這時MagicIndicator也可以滑動,從而導致MagicIndicator和RecyclerView會對向滑動;
我們的需求是MagicIndicator吸頂之后,RecyclerView在滑動過程中MagicIndicator不能滑動
針對這個問題,我使用了AppBarLayout的setDragCallback()方法來解決:
通過對Fragment中RecyclerView的滑動距離進行監(jiān)聽,當滑動距離<=0的時候,表明MagicIndicator已經吸頂了,這時候就禁止掉AppBarLayout的滑動;反之則開啟AppBarLayout的滑動
val params = binding.appbarlayout.layoutParams as CoordinatorLayout.LayoutParams
val behavior = params.behavior as? AppBarLayout.Behavior
behavior?.setDragCallback(object : AppBarLayout.Behavior.DragCallback() {
override fun canDrag(@NonNull appBarLayout: AppBarLayout): Boolean {
return onlyRvCommentScrollY <= 0 //如果底部列表有滑動距離,就不讓tab欄進行滑動
}
})