Sobes.tech
Middle

Ինչպե՞ս փոխել RecyclerView-ի սյունակների քանակը, որպեսզի հորիզոնական դիրքում ցուցադրվի մեկ սյունակ, իսկ ուղղահայաց դիրքում՝ երկու կամ ավելի սյունակ:

sobes.tech AI

Պատասխան AI-ից

Դուք կարող եք օգտագործել GridLayoutManager:

Տեսք՝ ինչպես փոխել սյունակների քանակը էկրանի ուղղությամբ՝

  1. Ստացեք սարքի ընթացիկ ուղղությունը:
// 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)
}
  1. Հետո՝ ըստ ուղղության, ստեղծեք GridLayoutManager՝ անհրաժեշտ սյունակների քանակով և սահմանեք այն RecyclerView-ի համար:
// Օրինակ՝ activity կամ fragment-ում, որտեղ օգտագործվում է RecyclerView
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))

Այս մոտեցումը ավելի ճկուն է, քանի որ հեշտ է փոփոխել սյունակների քանակը՝ առանց կոդը փոխելու։