开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
Scoffold中文意思是脚手架,那为什么把这个控件叫脚手架呢,其实意思就是它能先给你的页面打一个架子,然后再到里面填充东西,先看看一个脚手架例子:
这个图titile部分的内容是在scoffold的topBar里面的,底部的bottom是在bottomBar里面的,中间的content也有相应定义的问题,是不是它给你搭了一个架子,内容你随便填充就可以了。
除了这些scoffold还有一些其他的定义,看看它函数的定义:
fun Scaffold(
modifier: Modifier = Modifier,
scaffoldState: ScaffoldState = rememberScaffoldState(),
topBar: @Composable () -> Unit = {},
bottomBar: @Composable () -> Unit = {},
snackbarHost: @Composable (SnackbarHostState) -> Unit = { SnackbarHost(it) },
floatingActionButton: @Composable () -> Unit = {},
floatingActionButtonPosition: FabPosition = FabPosition.End,
isFloatingActionButtonDocked: Boolean = false,
drawerContent: @Composable (ColumnScope.() -> Unit)? = null,
drawerGesturesEnabled: Boolean = true,
drawerShape: Shape = MaterialTheme.shapes.large,
drawerElevation: Dp = DrawerDefaults.Elevation,
drawerBackgroundColor: Color = MaterialTheme.colors.surface,
drawerContentColor: Color = contentColorFor(drawerBackgroundColor),
drawerScrimColor: Color = DrawerDefaults.scrimColor,
backgroundColor: Color = MaterialTheme.colors.background,
contentColor: Color = contentColorFor(backgroundColor),
content: @Composable (PaddingValues) -> Unit
)
这个参数是真的多,去看看看其他的compose函数的定义,你会发现。。。其实都很多。从定义可以看出除了topBar,bottomBar还有很多其他的东西,例如:snackbarHost,floatingActionButton,还有一些属性的设置,这个是真的把比较常见UI的架子都给你设计好了,就等着填东西了,是不是很方便呢?
最近开始用compose写一些项目了,其实如果你对compose有一定的了解之后,你会发现有些地方还是和view很像的,比较好的地方是它的参数更直观一点,都写在了参数里面,所以大家要习惯去看compose函数的定义哦。如果有不会的地方就点开定义的地方去看看。
另外还有一个compose的问题,就发现compose对资源文件不是很友好,例如使用image,你需要用paintResource或者VectorResource去加载资源,对于有theme切换的项目还需要自己定义theme,大家这些问题都是怎么解决的呢?