簡體   English   中英

為什么 Android ViewPager2 class 是最終的?

[英]Why is the Android ViewPager2 class final?

在我當前的項目中使用ViewPager2時,我想使用setOnTouchListener ,但我無法獲得任何事件。

我決定擴展 ViewPager2 class 以覆蓋觸摸事件方法,但由於 class 定義是最終定義,因此無法實現。

為什么這個 class 是最終的,有沒有辦法擴展它以便我可以覆蓋觸摸事件?

好吧,我認為他們從一開始就完成了整個 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
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM