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))
Бул ыкма көбүрөөк ийкемдүү, анткени колонкалардын санын оңой өзгөртүүгө мүмкүндүк берет, кодду өзгөртпөстөн.