Как применить ItemDecoration слева и справа к элементу RecyclerView? - PullRequest
0 голосов
/ 27 августа 2018

Я так долго пытался этого добиться. Я хочу перекрыть выбранный элемент RecyclerView слева и справа, как показано на рисунке ниже.

enter image description here enter image description here

Я могу достичь левой или правой ItemDecoration, как показано ниже:

class OverlapDecoration(private val overlapWidth:Int) : RecyclerView.ItemDecoration() {
    private val overLapValue = -40

    val TAG = OverlapDecoration::class.java.simpleName

    override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State?) {

        val itemPosition = parent.getChildAdapterPosition(view)

        if (itemPosition == 0) {
            return
        } else {
            outRect.set(overLapValue, 0, 0, 0)
        }
    }
}

Я достиг, как показано на рисунке ниже. enter image description here

Я уже пробовал с CarouselLayoutManager , но это не то, что я ищу.

1 Ответ

0 голосов
/ 24 ноября 2018

Чтобы достичь желаемого результата, нужно сделать два шага:

Сначала исправим расчеты декоратора:

if (itemPosition == 0) {
    return
} else {
    outRect.set(-1 * overLapValue, 0, overLapValue, 0) //Need left, AND right
}

Во-вторых, вам нужно добавить тень

И еще одна небольшая очистка для класса, вам не нужен private val overLapValue.

Вместо того, чтобы:

class OverlapDecoration(private val overlapWidth:Int = 40) : RecyclerView.ItemDecoration() {
...