【问题标题】:ViewPager2: set a different padding for first and last pageViewPager2:为第一页和最后一页设置不同的填充
【发布时间】:2021-09-23 19:31:53
【问题描述】:

我已经为我的 ViewPager2 实现了“页面查看”功能:

private fun setViewPager() {
    inventoryVp?.apply {
        clipToPadding = false   // allow full width shown with padding
        clipChildren = false    // allow left/right item is not clipped
        offscreenPageLimit = 2  // make sure left/right item is rendered
    }

    inventoryVp?.setPadding(Utility.dpToPx(25), 0, Utility.dpToPx(25), 0)

    val pageMarginPx = Utility.dpToPx(6)
    val marginTransformer = MarginPageTransformer(pageMarginPx)
    inventoryVp?.setPageTransformer(marginTransformer)
}

这样做我可以查看上一页和下一页的一部分。但是第一页和最后一页显示更大的空白,因为在这个方向上没有其他页面可以显示。

如何为第一页和最后一页设置不同的填充?

【问题讨论】:

    标签: android kotlin android-viewpager2


    【解决方案1】:

    我使用 ItemDecoration 解决了它。

    class CartOOSVPItemDecoration(val marginStart: Int,
                               val marginEnd: Int) : RecyclerView.ItemDecoration() {
    
    override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
        if (parent.getChildAdapterPosition(view) == 0) {
            outRect.left = marginStart
        }
        else if(parent.getChildAdapterPosition(view) == ((parent.adapter?.itemCount ?: 0) - 1)) {
            outRect.right = marginEnd
        }
    
    }
    }
    
     inventoryVp?.addItemDecoration( CartOOSVPItemDecoration(Utility.dpToPx(-9), Utility.dpToPx(-9)))
    

    【讨论】:

      猜你喜欢
      • 2017-03-27
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      • 2013-08-31
      相关资源
      最近更新 更多