Middle
RecyclerView'da ustunlar sonini qanday o'zgartirish mumkin, shunda portret holatda bitta ustun, landshaft holatda esa ikki yoki undan ortiq ustun ko'rsatiladi?
sobes.tech AI
AIdan javob
Siz GridLayoutManager dan foydalanishingiz mumkin.
Ekran orientatsiyasiga qarab ustunlar sonini o'zgartirish uchun:
- Qurilmaning joriy orientatsiyasini oling.
- Orientatsiyaga qarab, kerakli ustunlar soni bilan
GridLayoutManageryarating va uniRecyclerViewuchun o'rnating.
Misol:
// RecyclerView ishlatiladigan faoliyat yoki fragmentda
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 ni boshlash ...
updateColumnCount(resources.configuration.orientation)
}
private fun updateColumnCount(orientation: Int) {
val spanCount = if (orientation == Configuration.ORIENTATION_PORTRAIT) {
1 // Portret holatda bitta ustun
} else {
2 // Landshaft holatda ikki ustun
// Boshqa qiymatni ham ishlatish mumkin, masalan 3, 4 va hokazo.
}
recyclerView.layoutManager = GridLayoutManager(this, spanCount)
}
Shuningdek, turli orientatsiyalar uchun resurslarda (dimens.xml) ustunlar sonini belgilash mumkin:
res/values/dimens.xml yaratish:
<resources>
<integer name="grid_span_count">1</integer>
</resources>
res/values-land yoki res/values-sw600dp-land (planshetlar uchun) dimens.xml yaratish:
<resources>
<integer name="grid_span_count">2</integer>
</resources>
Va bu resursni kodda ishlatish:
recyclerView.layoutManager = GridLayoutManager(this, resources.getInteger(R.integer.grid_span_count))
Ushbu yondashuv yanada moslashuvchan bo'lib, ustunlar sonini kodni o'zgartirmasdan osonlik bilan o'zgartirish imkonini beradi.