Middle
როგორ შევცვალოთ RecyclerView-ის სვეტების რაოდენობა ისე, რომ პორტრეტის მიმართულებით ერთი სვეტი იყოს, ხოლო ლანდშაფტის მიმართულებით ორი ან მეტი სვეტი?
sobes.tech AI
პასუხი AI-სგან
შეგიძლიათ გამოიყენოთ GridLayoutManager.
კოლონების რაოდენობის ცვლილებისთვის ეკრანის მიმართულების მიხედვით, უნდა:
- მიიღოთ მიმდინარე მოწყობილობის მიმართულება.
- მიმართულების მიხედვით, შექმნათ
GridLayoutManagerსაჭირო რაოდენობის კოლონებით და დაამაგროთ იგიRecyclerView-ზე.
მაგალითი:
// აქტივობაში ან ფრაგმენტში, სადაც გამოიყენება 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-ის ინიციალიზაცია ...
updateColumnCount(resources.configuration.orientation)
}
private fun updateColumnCount(orientation: Int) {
val spanCount = if (orientation == Configuration.ORIENTATION_PORTRAIT) {
1 // ერთი სვეტი პორტრეტის რეჟიმში
} else {
2 // ორი სვეტი ლანდშაფტის რეჟიმში
// შეიძლება გამოიყენოთ სხვა მნიშვნელობა, მაგალითად 3, 4 და ა.შ.
}
recyclerView.layoutManager = GridLayoutManager(this, spanCount)
}
ასევე შესაძლებელია განსაზღვროთ კოლონების რაოდენობა რესურსებში (dimens.xml) სხვადასხვა მიმართულებისთვის:
შექმენით res/values/dimens.xml:
<resources>
<integer name="grid_span_count">1</integer>
</resources>
შექმენით res/values-land ან res/values-sw600dp-land (პლანშეტებისთვის) dimens.xml:
<resources>
<integer name="grid_span_count">2</integer>
</resources>
და შემდეგ გამოიყენეთ ეს რესურსი კოდში:
recyclerView.layoutManager = GridLayoutManager(this, resources.getInteger(R.integer.grid_span_count))
ეს მიდგომა უფრო მოქნილია, რადგან ადვილად შეიძლება შეცვალოთ კოლონების რაოდენობა, კოდის შეცვლის გარეშე.