Middle
Kaip pakeisti RecyclerView stulpelių skaičių, kad portreto režimu būtų rodoma viena stulpelis, o peizažo režimu – du ar daugiau stulpelių?
sobes.tech AI
Atsakymas iš AI
Galima naudoti GridLayoutManager.
Norint keisti stulpelių skaičių priklausomai nuo ekrano orientacijos, reikia:
- Gauti įrenginio dabartinę orientaciją.
- Priklausomai nuo orientacijos, sukurti
GridLayoutManagersu reikiamu stulpelių skaičiumi ir jį nustatytiRecyclerView.
Pavyzdys:
// Veikloje arba fragmento, kur naudojamas 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)
// ... RecyclerView inicijavimas ...
updateColumnCount(resources.configuration.orientation)
}
private fun updateColumnCount(orientation: Int) {
val spanCount = if (orientation == Configuration.ORIENTATION_PORTRAIT) {
1 // Vienas stulpelis portreto režimu
} else {
2 // Du stulpeliai landšafto režimu
// Galima naudoti kitą reikšmę, pvz., 3, 4 ir t.t.
}
recyclerView.layoutManager = GridLayoutManager(this, spanCount)
}
Taip pat galima apibrėžti stulpelių skaičių resursuose (dimens.xml) skirtingoms orientacijoms:
Sukurkite res/values/dimens.xml:
<resources>
<integer name="grid_span_count">1</integer>
</resources>
Sukurkite res/values-land arba res/values-sw600dp-land (planšetėms) dimens.xml:
<resources>
<integer name="grid_span_count">2</integer>
</resources>
Ir tada naudokite šį resursą kode:
recyclerView.layoutManager = GridLayoutManager(this, resources.getInteger(R.integer.grid_span_count))
Šis požiūris yra lankstesnis, nes leidžia lengvai keisti stulpelių skaičių be kodo keitimo.