ViewPager2
実装バグのようです。ページャーが作成したビューを初めて取得すると、ページャーはrequestApplyInsets
それを呼び出します。しかし、残念ながら、ビューは親ビューをアタッチしていないため、 の呼び出しはrequestApplyInsets
効果がありません。
View.OnAttachStateChangeListener
にwhich 呼び出しrequestApplyInsets
を追加することで解決できますonViewAttachedToWindow
。
あなたのParallelNestedScrollingActivity
サンプルは次のようにうまく機能しているようです:
diff --git a/ViewPager2/app/src/main/java/androidx/viewpager2/integration/testapp/ParallelNestedScrollingActivity.kt b/ViewPager2/app/src/main/java/androidx/viewpager2/integration/testapp/ParallelNestedScrollingActivity.kt
index 4e3753a..d2683df 100644
--- a/ViewPager2/app/src/main/java/androidx/viewpager2/integration/testapp/ParallelNestedScrollingActivity.kt
+++ b/ViewPager2/app/src/main/java/androidx/viewpager2/integration/testapp/ParallelNestedScrollingActivity.kt
@@ -29,0 +30 @@ import android.widget.TextView
+import androidx.core.view.ViewCompat
@@ -57 +58,3 @@ class ParallelNestedScrollingActivity : Activity() {
- val root = inflater.inflate(R.layout.item_nested_recyclerviews, parent, false)
+ val root = inflater.inflate(R.layout.item_nested_recyclerviews, parent, false).apply {
+ addOnAttachStateChangeListener(RequestApplyInsetsOnAttached)
+ }
@@ -132,0 +136,5 @@ internal val CELL_COLORS = listOf(
+
+private object RequestApplyInsetsOnAttached : View.OnAttachStateChangeListener {
+ override fun onViewAttachedToWindow(view: View) = ViewCompat.requestApplyInsets(view)
+ override fun onViewDetachedFromWindow(view: View) = Unit
+}