このような左右のページのプレビューを使用して、_View Pager2
_を使用してカルーセルを実装したいです。
最初に私はサポートされているView Pager1を使用していました。今、私はそれが取り除かれていると思います
_ viewPagerhost.setPageMargin(20);
_
View Pager 2を使ってこれを達成できる方法はあらゆるアイデア
私は使用しました MJ Studioのアプローチ カスタムPageTransformer
を作成して、それが次のようにページマージンを変更します。
class OffsetPageTransformer(
@Px private val offsetPx: Int,
@Px private val pageMarginPx: Int
) : ViewPager2.PageTransformer {
override fun transformPage(page: View, position: Float) {
val viewPager = requireViewPager(page)
val offset = position * -(2 * offsetPx + pageMarginPx)
val totalMargin = offsetPx + pageMarginPx
if (viewPager.orientation == ViewPager2.ORIENTATION_HORIZONTAL) {
page.updateLayoutParams<ViewGroup.MarginLayoutParams> {
marginStart = totalMargin
marginEnd = totalMargin
}
page.translationX = if (ViewCompat.getLayoutDirection(viewPager) == ViewCompat.LAYOUT_DIRECTION_RTL) {
-offset
} else {
offset
}
} else {
page.updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = totalMargin
bottomMargin = totalMargin
}
page.translationY = offset
}
}
private fun requireViewPager(page: View): ViewPager2 {
val parent = page.parent
val parentParent = parent.parent
if (parent is RecyclerView && parentParent is ViewPager2) {
return parentParent
}
throw IllegalStateException(
"Expected the page view to be managed by a ViewPager2 instance."
)
}
}
_
そのようにあなたはちょうど電話することができます:
viewPager.setPageTransformer(OffsetPageTransformer(offsetPx, pageMarginPx))
_