12

ViewPager2我当前的项目中使用时,我想使用setOnTouchListener,但我无法获得任何事件。

我决定扩展 ViewPager2 类以覆盖触摸事件方法,但由于类定义是最终的,因此无法实现。

为什么这个类是最终的,有什么方法可以扩展它以便我可以覆盖触摸事件?

4

3 回答 3

2

好吧,我认为他们从一开始就完成了整个 viewpager 的事情。最喜欢是因为片段代码中的所有片段也被弄乱了。

他们甚至要求我们不要使用来自全新 androidx 的普通 viewpager,因为它有错误。我认为报告的一些错误现在是旧代码,试图修复旧 viewpager 实现中的问题。我认为他们现在的代码足够稳定,可以使用,并且不希望我们在过渡到 viewpager2 时实施所有现在不必要的、可能适得其反的修复。

我很生气谷歌过去如何处理整个片段和浏览器的东西。它说明了他们从来没有让它在主代码库中工作,并且总是建议使用兼容包。

所以简而言之。现在经过多年,他们让它工作了,他们希望你放弃所有现在不再需要的修复..

于 2020-10-15T14:20:49.963 回答
1

很可能是final,因为它不是扩展它的想法

...并且该关键字在防止这种情况方面非常有效。

于 2019-09-26T20:34:31.990 回答
0

您可以使用 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
    }
于 2022-01-04T06:37:21.507 回答