移除 ViewPager2 滚动动画
Remove ViewPager2 Overscroll animation
找不到删除 ViewPager2 过度滚动阴影动画的方法。
我知道在 ViewPager 上,你可以直接将 overscrollMode 属性设置为 never,但是,它在 ViewPager2
上不起作用
已经尝试过以下
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"/>
binding.viewPager.apply {
adapter = adapter
orientation = ViewPager2.ORIENTATION_VERTICAL
overScrollMode = ViewPager2.OVER_SCROLL_NEVER
offscreenPageLimit = if (containsVideo) 2 else 5
}
解决方案
binding.viewPager2.apply {
adapter = vpAdapter
orientation = ViewPager2.ORIENTATION_VERTICAL
registerOnPageChangeCallback(pageChangeCallback)
(getChildAt(0) as RecyclerView).overScrollMode = RecyclerView.OVER_SCROLL_NEVER
}
如果有人正在寻找 Java 解决方案
View child = viewPager2.getChildAt(0);
if (child instanceof RecyclerView) {
child.setOverScrollMode(View.OVER_SCROLL_NEVER);
}
这个对我有用:
val child = binding.<your viewPager camelCase id>.getChildAt(0)
(child as? RecyclerView)?.overScrollMode = View.OVER_SCROLL_NEVER
在我的项目中工作的我的 kotlin 代码版本,没有绑定:
// over scroll animation
val child: View = pager.getChildAt(0)
if (child is RecyclerView) {
child.overScrollMode = View.OVER_SCROLL_NEVER
}
谢谢。
作为 Kotlin 扩展:
fun ViewPager2.removeOverScroll() {
(getChildAt(0) as? RecyclerView)?.overScrollMode = View.OVER_SCROLL_NEVER
}
并且您正在 Fragment/Activity 中使用它:
viewPager.removeOverScroll()
使用android:overScrollMode="从不"
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/infoViewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:overScrollMode="never"
app:layout_constraintBottom_toTopOf="@id/guideLine1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
/>
找不到删除 ViewPager2 过度滚动阴影动画的方法。 我知道在 ViewPager 上,你可以直接将 overscrollMode 属性设置为 never,但是,它在 ViewPager2
上不起作用已经尝试过以下
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"/>
binding.viewPager.apply {
adapter = adapter
orientation = ViewPager2.ORIENTATION_VERTICAL
overScrollMode = ViewPager2.OVER_SCROLL_NEVER
offscreenPageLimit = if (containsVideo) 2 else 5
}
解决方案
binding.viewPager2.apply {
adapter = vpAdapter
orientation = ViewPager2.ORIENTATION_VERTICAL
registerOnPageChangeCallback(pageChangeCallback)
(getChildAt(0) as RecyclerView).overScrollMode = RecyclerView.OVER_SCROLL_NEVER
}
如果有人正在寻找 Java 解决方案
View child = viewPager2.getChildAt(0);
if (child instanceof RecyclerView) {
child.setOverScrollMode(View.OVER_SCROLL_NEVER);
}
这个对我有用:
val child = binding.<your viewPager camelCase id>.getChildAt(0)
(child as? RecyclerView)?.overScrollMode = View.OVER_SCROLL_NEVER
在我的项目中工作的我的 kotlin 代码版本,没有绑定:
// over scroll animation
val child: View = pager.getChildAt(0)
if (child is RecyclerView) {
child.overScrollMode = View.OVER_SCROLL_NEVER
}
谢谢。
作为 Kotlin 扩展:
fun ViewPager2.removeOverScroll() {
(getChildAt(0) as? RecyclerView)?.overScrollMode = View.OVER_SCROLL_NEVER
}
并且您正在 Fragment/Activity 中使用它:
viewPager.removeOverScroll()
使用android:overScrollMode="从不"
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/infoViewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:overScrollMode="never"
app:layout_constraintBottom_toTopOf="@id/guideLine1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
/>