Jetpack Compose 提供多個版面配置容器,可協助您建構及排列 UI 元件。雖然 Row 和 Column 等基本版面配置可組合項可處理簡單的排列方式,但隨著螢幕大小變化和使用者資料增加,許多應用程式需要更靈活、更具適應性的容器解決方案。
版面配置容器包括:
- Lazy 清單和 Lazy 格線:
LazyColumn、LazyRow和LazyVerticalGrid等元件,只會組成及配置目前在可視區域中顯示的項目,因此能有效顯示大型或動態大小的資料集。 - 翻頁元素:
HorizontalPager和VerticalPager等容器,可讓使用者在內容頁面之間滑動或捲動。 - 流式版面配置:回應式一維容器 (
FlowRow和FlowColumn),可在空間用盡時,自動將溢出的項目換行或換欄。 - 格狀:彈性的二維結構,可根據容器大小,以多欄或多列版面配置顯示項目。
- FlexBox:受 CSS Flexbox 啟發的自動調整容器,可精細控制項目如何沿著主軸和交叉軸換行、放大、縮小及對齊,以填滿可用空間。
選擇正確的版面配置容器
在 Compose 中建構版面配置時,應根據設計、空間受限時是否必須換行,以及項目如何動態調整大小,選擇基本或更進階的版面配置容器。
下表摘要說明各個 Compose 1D 版面配置容器的功能:
容器 |
將項目換行 |
逐項成長 |
單項商品損耗 |
每個項目的起始大小 |
項目會放大,填滿多行可用空間 |
重新排列項目 |
延遲載入 |
適用情境: |
列 / 欄 |
❌ |
✅ (透過 |
❌ |
❌ |
❌ |
❌ |
❌ |
|
FlowRow / FlowColumn |
✅ |
受限 |
❌ |
❌ |
部分 |
❌ |
❌ |
|
LazyRow / LazyColumn |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
|
FlexBox |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
❌ |
|
下表匯總 Grid 和其他類似可組合項的功能:
容器 |
嚴格 2D 校驗 |
項目跨度 (欄) |
項目跨度 (列) |
延遲載入 |
適用情境: |
格狀 |
✅ |
✅ (透過 |
✅ |
❌ |
|
LazyVerticalGrid |
✅ |
✅ (透過 |
❌ |
✅ |
|
LazyStaggeredGrid |
❌ (僅限 1D) |
部分 (僅限完整 span) |
❌ |
✅ |
|
LazyHorizontalGrid |
✅ |
❌ |
✅ |
✅ |
|
合併列和欄 |
❌ |
❌ |
❌ |
❌ |
|