Middle
Kā mainīt RecyclerView kolonnu skaitu tā, lai portreta režīmā būtu viena kolonna, bet ainavas režīmā – divas vai vairāk kolonnas?
sobes.tech AI
Atbilde no AI
Jūs varat izmantot GridLayoutManager.
Lai mainītu kolonnu skaitu atkarībā no ekrāna orientācijas, jums jā:
- Iegūst pašreizējo ierīces orientāciju.
- Atkarībā no orientācijas, izveidot
GridLayoutManagerar nepieciešamo kolonnu skaitu un to uzstādītRecyclerView.
Piemērs:
// Aktīvajā vai fragmentā, kur tiek izmantots 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 inicializācija ...
updateColumnCount(resources.configuration.orientation)
}
private fun updateColumnCount(orientation: Int) {
val spanCount = if (orientation == Configuration.ORIENTATION_PORTRAIT) {
1 // Viena kolonna portreta režīmā
} else {
2 // Divas kolonnas landskapa režīmā
// Var izmantot citu vērtību, piemēram, 3, 4 utt.
}
recyclerView.layoutManager = GridLayoutManager(this, spanCount)
}
Tāpat var definēt kolonnu skaitu resursos (dimens.xml) dažādām orientācijām:
Izveidojiet res/values/dimens.xml:
<resources>
<integer name="grid_span_count">1</integer>
</resources>
Izveidojiet res/values-land vai res/values-sw600dp-land (planšetēm) dimens.xml:
<resources>
<integer name="grid_span_count">2</integer>
</resources>
Un pēc tam izmantojiet šo resursu kodā:
recyclerView.layoutManager = GridLayoutManager(this, resources.getInteger(R.integer.grid_span_count))
Šī pieeja ir elastīgāka, jo ļauj viegli mainīt kolonnu skaitu, nemainot kodu.