【发布时间】:2022-11-26 19:06:24
【问题描述】:
我已经实现了pinned top app bar scroll container,它可以改变滚动时的app bar颜色,但是状态栏颜色完全不受影响。
这是我所拥有的:
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState())
Scaffold(
Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
// just a wrapper for CenterAlignedTopAppBar
StandardTopAppBar("Home", scrollBehavior = scrollBehavior)
}
){ ... }
如果相关,为了检测软键盘是否存在,我启用了:
WindowCompat.setDecorFitsSystemWindows(window, false)
我的状态栏颜色最初设置在我的Theme。当我在 android studios 中自动生成项目时,它被设置为原色,但我将其更改为表面颜色以匹配应用栏标准:
if (!view.isInEditMode) {
SideEffect {
(view.context as Activity).window.statusBarColor = colorScheme.surface.toArgb()
//(view.context as Activity).window.statusBarColor = colorScheme.primary.toArgb()
ViewCompat.getWindowInsetsController(view)?.isAppearanceLightStatusBars = !darkTheme // changed from just darkTheme
}
}
TL;博士;滚动时顶部应用栏的颜色会发生变化,但状态栏不会。在这里使用的正确模式是什么?我查看了一些 pinnedScrollBehavior 代码,但没有看到任何会调用状态栏更改的内容,所以我想知道我是否应该让状态栏透明并更改应用栏的插图?或者我应该手动挂钩滚动逻辑并自己更改颜色?任何帮助表示赞赏!
【问题讨论】:
标签: android-jetpack-compose android-jetpack-compose-material3