通常对于滑动类的View 设置 OverScrollMode=“never”,即可处理掉滑动到边界有阴影的问题,但是针对ViewPage2滑动到边界有阴影的问题,设置OverScrollMode=“never”,却无效。
查看源码得知,ViewPage2被关键字final 修饰,导致ViewPage2 无法被继承。其内部就是基于RecyclerView来完成。而RecyclerView被定义为Protect类型,外部无法访问,导致RecyclerView 的overScrollMode 设置无效。
阴影产生的原因:RecyclerView中根据setWillNotDraw中的类型值来判断当前是否显示阴影,而setWillNotDraw中的值是根据OverScrollMode 的值来判断接收的值是否为true,如果等于true 则不显示,如果等于false 则显示。
通过深入探索发现ViewPager2获取getChildAt(0)到的子View 是RecyclerView。所以通过以下代码来完成
val view: View = mBinder.reservlist.getChildAt(0)
if (view is RecyclerView) {
view.overScrollMode = View.OVER_SCROLL_NEVER
}