在ViewPager2
我当前的项目中使用时,我想使用setOnTouchListener
,但我无法获得任何事件。
我决定扩展 ViewPager2 类以覆盖触摸事件方法,但由于类定义是最终的,因此无法实现。
为什么这个类是最终的,有什么方法可以扩展它以便我可以覆盖触摸事件?
在ViewPager2
我当前的项目中使用时,我想使用setOnTouchListener
,但我无法获得任何事件。
我决定扩展 ViewPager2 类以覆盖触摸事件方法,但由于类定义是最终的,因此无法实现。
为什么这个类是最终的,有什么方法可以扩展它以便我可以覆盖触摸事件?
好吧,我认为他们从一开始就完成了整个 viewpager 的事情。最喜欢是因为片段代码中的所有片段也被弄乱了。
他们甚至要求我们不要使用来自全新 androidx 的普通 viewpager,因为它有错误。我认为报告的一些错误现在是旧代码,试图修复旧 viewpager 实现中的问题。我认为他们现在的代码足够稳定,可以使用,并且不希望我们在过渡到 viewpager2 时实施所有现在不必要的、可能适得其反的修复。
我很生气谷歌过去如何处理整个片段和浏览器的东西。它说明了他们从来没有让它在主代码库中工作,并且总是建议使用兼容包。
所以简而言之。现在经过多年,他们让它工作了,他们希望你放弃所有现在不再需要的修复..
很可能是final
,因为它不是扩展它的想法
...并且该关键字在防止这种情况方面非常有效。
您可以使用 viewPage2 内部的 recyclerView 的 onTouch。
fun ViewPager2.getRecyclerView(): RecyclerView {
val recyclerViewField = ViewPager2::class.java.getDeclaredField("mRecyclerView")
recyclerViewField.isAccessible = true
return recyclerViewField.get(this) as RecyclerView
}
用法
pager2.getRecyclerView().setOnTouchListener { view, motionEvent ->
false
}