Middle
Jak změnit počet sloupců v RecyclerView tak, aby se při portré režimu zobrazovala jedna sloupec, a při landscape režimu dva nebo více sloupců?
sobes.tech AI
Odpověď od AI
Můžete použít GridLayoutManager.
Pro změnu počtu sloupců v závislosti na orientaci obrazovky je třeba:
- Získat aktuální orientaci zařízení.
- V závislosti na orientaci vytvořit
GridLayoutManagers potřebným počtem sloupců a nastavit ho proRecyclerView.
Příklad:
// V aktivitě nebo fragmentu, kde se používá RecyclerView
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
updateColumnCount(newConfig.orientation)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// ... inicializace RecyclerView ...
updateColumnCount(resources.configuration.orientation)
}
private fun updateColumnCount(orientation: Int) {
val spanCount = if (orientation == Configuration.ORIENTATION_PORTRAIT) {
1 // Jeden sloupec na výšku
} else {
2 // Dva sloupce na šířku
// Můžete použít jinou hodnotu, například 3, 4 atd.
}
recyclerView.layoutManager = GridLayoutManager(this, spanCount)
}
Také můžete definovat počet sloupců v zdrojích (dimens.xml) pro různé orientace:
Vytvořte res/values/dimens.xml:
<resources>
<integer name="grid_span_count">1</integer>
</resources>
Vytvořte res/values-land nebo res/values-sw600dp-land (pro tablety) dimens.xml:
<resources>
<integer name="grid_span_count">2</integer>
</resources>
A poté použijte tento zdroj v kódu:
recyclerView.layoutManager = GridLayoutManager(this, resources.getInteger(R.integer.grid_span_count))
Tento přístup je flexibilnější, protože umožňuje snadno měnit počet sloupců bez úpravy kódu.