Sobes.tech
Middle

RecyclerView-də sütunların sayını necə dəyişdirmək olar ki, portret rejimində bir sütun, landşaft rejimində isə iki və ya daha çox sütun göstərilsin?

sobes.tech Süni İntellekt

AI-dan cavab

Siz GridLayoutManager istifadə edə bilərsiniz.

Ekran yönünə görə sütunların sayını dəyişdirmək üçün:

  1. Cihazın cari yönünü əldə edin.
  2. Yönə görə, lazım olan sütun sayısı ilə GridLayoutManager yaradın və onu RecyclerView üçün təyin edin.

Nümunə:

// RecyclerView istifadə olunan fəaliyyət və ya fragmentdə
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-in başlanğıcı ...

    updateColumnCount(resources.configuration.orientation)
}

private fun updateColumnCount(orientation: Int) {
    val spanCount = if (orientation == Configuration.ORIENTATION_PORTRAIT) {
        1 // Portret rejimində bir sütun
    } else {
        2 // Landşaft rejimində iki sütun
        // Digər dəyər də istifadə oluna bilər, məsələn 3, 4 və s.
    }

    recyclerView.layoutManager = GridLayoutManager(this, spanCount)
}

Həmçinin, müxtəlif yönlər üçün resurslarda (dimens.xml) sütunların sayını təyin edə bilərsiniz:

res/values/dimens.xml yaradın:

<resources>
    <integer name="grid_span_count">1</integer>
</resources>

res/values-land və ya res/values-sw600dp-land (planşetlər üçün) dimens.xml yaradın:

<resources>
    <integer name="grid_span_count">2</integer>
</resources>

Və sonra bu resursu kodda istifadə edin:

recyclerView.layoutManager = GridLayoutManager(this, resources.getInteger(R.integer.grid_span_count))

Bu yanaşma daha çevikdir, çünki sütunların sayını asanlıqla dəyişdirməyə imkan verir, kodu dəyişmədən.