TGViewer
Android Broadcast Android Broadcast @android_broadcast · 14.5K subscribers
Post #9459 7.96K
🚀 Отказываюсь от Списков в пользу Сеток в UI

Раньше для списков в Compose я по привычке использовал LazyColumn. Но чем больше работаю с адаптивными интерфейсами, тем очевиднее: это никуда не годиться и надо использовать доступное пространство, а не тупо растягивать интерфейс. Перехожу на Grid компоновку ✔️

LazyVerticalGrid позволяет задать фиксированную ширину колонки, и система сама рассчитает, сколько их поместится на экране.
В результате:
1️⃣ адаптивность «из коробки» на телефонах, планшетах и больших экранах
2️⃣ минимум дополнительного кода,
3️⃣единый компонент вместо костылей для разных форм-факторов.

LazyVerticalGrid(
columns = GridCells.Adaptive(minSize = 120.dp),
modifier = Modifier.fillMaxSize(),
contentPadding = PaddingValues(8.dp)
) {
items(100) { Item(...) }
}


Определение количества колонок происходит на основе политики GridCell:
// всегда N колонок
GridCells.Fixed(N)

// автоматический расчет на основе минимальной ширины колонки
GridCells.Adaptive(minSize = 120.dp)

// каждая ячейка шириной 100dp
GridCells.FixedSize(100.dp)


📱 На маленьком экране это будет 2–3 колонки, а на планшете — уже 5–6, и всё это без ручной логики.

Есть еще более гибкий вариант если элементы строк должны быть разной высоты - LazyVerticalStaggeredGrid (стиль как в Pinterest)

LazyVerticalStaggeredGrid(
columns = Adaptive(minSize = 150.dp),
modifier = Modifier.fillMaxSize(),
contentPadding = PaddingValues(8.dp)
) {
items(100) { Item(...) }
}


❗️ Теперь я придерживаюсь строго правила:
Если не могу явно сформулировать почему интерфейс должен быть в одну колонку, то вертикальный список брать не стоит!


🔗 Очень хорошо построение списков осветили в документации по Lazy Layout

Аналогично можно проделать и с RecyclerView, использую вместо LinearLayoutManager вариант с сеткой - GridLayoutManager или StaggeredGridLayoutManager, только там не будет автоматического расчета колонок на основе доступного места. Это придется реализовывать самостоятельно.

✍️ Что думаете о таком подходе для UI? Ударит по производительности?

#ui #android #compose
  • 👍 95
  • 🤔 18
  • 🔥 9
  • 🏆 9
  • ❤ 2
  • 🙏 1
More from @android_broadcast
  1. Oct 1, 2026🔥 Выпустили официальный плагин Firebase для Codex #Firebase #Codex
  2. Oct 1, 2026👨🏻‍💻 Строим мультиагентные системы для разработки на Podlodka AI Crew Инженерные задачи…
  3. Sep 30, 2026📹 День, когда сайдлоадинг остановился. Google запустила верификацию разработчиков при уст…
  4. Sep 30, 2026‼️NoOp — удобный способ отключить API в релизных сборках без усложнения кода Отладочные ин…
  5. Sep 30, 2026🛒 Google Play расширяет возможности и типы платных подписок В блоге Android Developers ра…
  6. Sep 29, 2026🤖 Обновленный гайд по поиску лагов UI в Android Показано как искать проблемы на версиях A…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →