Android EpoxyRecyclerView - переключение ориентации - PullRequest
0 голосов
/ 08 февраля 2020

Я пытаюсь построить следующую структуру макета с помощью Epoxy:

enter image description here

Первые три макета взяты из EpoxyAModel. Четвертый из EpoxyBModel.

Это моя функция buildModels:

override fun buildModels() {

    aModels.forEach { //this happens 3 times
        modelA {
            id("someID")
            (...)

        }
    }

    modelB {
        id("someID2")
        (...)
    }

}

С этой настройкой я получаю следующий результат:

enter image description here

Это понятно, поскольку документация EpoxyRecyclerView гласит:

Если для RecyclerView задан размер match_parent, то ориентация прокрутки устанавливается на вертикальную и Для setHasFixedSize задано значение true.

Если для высоты задано значение wrap_content, то для ориентации прокрутки установлено значение по горизонтали, а для setClipToPadding установлено значение false.

Мой вопрос : есть ли возможность получить желаемый эффект или мне нужно определить другой EpoxyRecyclerView и контроллер?

Заранее спасибо.

1 Ответ

0 голосов
/ 08 февраля 2020

Хорошо, я понял это!

Во-первых, нам нужно присвоить GridLayoutManager для EpoxyRecyclerView:

recyclerView.layoutManager = GridLayoutManager(context, 3)

Затем внутри EpoxyBModel нам нужно переопределить метод getSpanSize, чтобы сообщить Диспетчер компоновки, что этот элемент имеет размер целого ряда элементов:

override fun getSpanSize(totalSpanCount: Int, position: Int, itemCount: Int): Int = 3
...