Sobes.tech
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:

  1. Qurilmaning joriy orientatsiyasini oling.
  2. Orientatsiyaga qarab, kerakli ustunlar soni bilan GridLayoutManager yarating va uni RecyclerView uchun 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.