Middle
Kuidas muuta RecyclerView veergude arvu nii, et portreevaates kuvatakse üks veerg ja maastikuvaates kaks või rohkem veerge?
sobes.tech AI
Vastus AI-lt
Võite kasutada GridLayoutManager.
Kolonite arvu muutmiseks sõltuvalt ekraani orientatsioonist, peate:
- Saama praeguse seadme orientatsiooni.
- Sõltuvalt orientatsioonist, looma
GridLayoutManagervajaliku arvuga veerge ja määrama selleRecyclerView-le.
Näide:
// Tegevuses või fragmendis, kus kasutatakse 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 initsialiseerimine ...
updateColumnCount(resources.configuration.orientation)
}
private fun updateColumnCount(orientation: Int) {
val spanCount = if (orientation == Configuration.ORIENTATION_PORTRAIT) {
1 // Üks veerg portree-režiimis
} else {
2 // Kaks veerg maastiku-režiimis
// Võid kasutada teist väärtust, näiteks 3, 4 jne.
}
recyclerView.layoutManager = GridLayoutManager(this, spanCount)
}
Samuti saab määrata veergude arvu ressurssides (dimens.xml) erinevate orientatsioonide jaoks:
Loo res/values/dimens.xml:
<resources>
<integer name="grid_span_count">1</integer>
</resources>
Loo res/values-land või res/values-sw600dp-land ( tahvelarvutite jaoks) dimens.xml:
<resources>
<integer name="grid_span_count">2</integer>
</resources>
Ja kasuta seda ressurssi koodis:
recyclerView.layoutManager = GridLayoutManager(this, resources.getInteger(R.integer.grid_span_count))
See lähenemine on paindlikum, kuna võimaldab hõlpsasti muuta veergude arvu ilma koodi muutmata.