Sobes.tech
Middle

RecyclerViewдеги баганалардын санын кантип өзгөртсө болот, портреттик багытта бир багана, ал эми ландшафттык багытта эки же андан көп багана көрсөтүлөт?

sobes.tech AI

AIден жооп

Сиз GridLayoutManager колдонсоңуз болот.

Экранын ориентациясына жараша колонкалардын санын өзгөртүү үчүн:

  1. Устройство азыркы ориентациясын алыңыз.
  2. Ориентацияга жараша, керектүү колонкалардын санын камтыган 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))

Бул ыкма көбүрөөк ийкемдүү, анткени колонкалардын санын оңой өзгөртүүгө мүмкүндүк берет, кодду өзгөртпөстөн.