Ответ
Для разных ориентаций можно использовать разные LayoutManager или XML-разметки.
1. Разные LayoutManager:
val layoutManager = if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {
GridLayoutManager(this, 3) // 3 колонки в альбомной
} else {
LinearLayoutManager(this) // список в портретной
}
recyclerView.layoutManager = layoutManager
2. Разные XML-разметки:
Создайте папки layout-land и layout-port в res, поместите туда разные XML с RecyclerView.
3. Динамическое изменение spanCount в GridLayoutManager:
recyclerView.addOnLayoutChangeListener { _, _, _, _, _, _, _, _, _ ->
val spanCount = if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) 3 else 2
(recyclerView.layoutManager as GridLayoutManager).spanCount = spanCount
}
Также можно использовать ConfigurationChanged в Activity/Fragment.