今天閱讀「適用於 Android 開發人員的 Jetpack Compose」第一章「Compose 基礎知識」的「實際進行設計」的 8~15 小章
LazyHorizontalGrid
可以想成 RecyclerView 的 GridLayoutManager,同一個項目多種排列方式
rows
的GridCells.Fixed()
設定數量就好LazyHorizontalGrid(
rows = GridCells.Fixed(數量),
modifier = modifier
) {
items(favoriteCollectionsData) { item ->
}
}
名字
,所以使用Slot API
來處理
content: @Composable () -> Unit
Row
或Column
來排版fun HomeSection(
@StringRes title: Int,
modifier: Modifier = Modifier,
content: @Composable () -> Unit //這邊放入 1.
) {
Column(modifier) {
Text(stringResource(title)) //這邊放入 2.
content()
}
}
Spacer
來隔開
fun HomeScreen(modifier: Modifier = Modifier) {
Column(modifier) {
Spacer(Modifier.height(16.dp)) //間距 16dp
SearchBar(Modifier.padding(horizontal = 16.dp))
HomeSection(title = R.string.align_your_body) {
AlignYourBodyRow()
}
Spacer(Modifier.height(16.dp)) //間距 16dp
HomeSection(title = R.string.favorite_collections) {
FavoriteCollectionsGrid()
}
Spacer(Modifier.height(16.dp)) //間距 16dp
}
}
modifier
設定上下滑動verticalScroll
或左右滑動horizontalScroll
,再放入rememberScrollState()
就行,簡單說就是把他當ScrollView
來用
Column(
modifier
.verticalScroll(rememberScrollState())
) {
}
NavigationBar
來當 ViewPager 用,不過今年 Google IO 已經說 ViewPager 支持 ComposeWindowSizeClass
判斷目前視窗大小
fun MySootheApp(windowSize: WindowSizeClass) {
when (windowSize.widthSizeClass) {
WindowWidthSizeClass.Compact -> {
MySootheAppPortrait() //直向畫面顯示的 UI
}
WindowWidthSizeClass.Expanded -> {
MySootheAppLandscape() //橫向畫面顯示的 UI
}
}
}