SnapHelper проблема с первым и последним элементом - PullRequest
2 голосов
/ 25 марта 2019

Я использую Recyclerview с PageSnapHelper для создания карусели изображений.

Первый элемент - не по центру enter image description here

Second Item Centered

Первый элементне центрируется и последующие элементы должны быть центрированы, я добился этого с помощью декоратора элементов.RecyclerView находится внутри вложенного представления прокрутки.

Проблема: Прокрутка не плавная, я переопределил findTargetSnapPosition, она прокручивает 2 элемента для первого броска.

 override fun findTargetSnapPosition(layoutManager: RecyclerView.LayoutManager, velocityX: Int, velocityY: Int): Int {

    if (layoutManager !is RecyclerView.SmoothScroller.ScrollVectorProvider) {
        return RecyclerView.NO_POSITION
    }

    val currentView = findSnapView(layoutManager) ?: return RecyclerView.NO_POSITION

    val layoutManager = layoutManager as LinearLayoutManager

    val position1 = layoutManager.findFirstVisibleItemPosition()
    val position2 = layoutManager.findLastVisibleItemPosition()

    var currentPosition = layoutManager.getPosition(currentView)



    if (velocityX > 500) {
        currentPosition = position2
    } else if (velocityX < 500) {
        currentPosition = position1
    }

    return if (currentPosition == RecyclerView.NO_POSITION) {
        RecyclerView.NO_POSITION
    } else currentPosition

}
...