compose-collapsing-toolbar
compose-collapsing-toolbar copied to clipboard
Wrong initial scroll position when toolbar has dynamic height
My toolbar is built with ConstraintLayout and it depends on WindowInsets so I can calculate statusBarHeight like this:
toolbar = {
val paddingValues = WindowInsets.systemBars.asPaddingValues()
Box(
modifier = Modifier
.padding(top = paddingValues.calculateTopPadding())
.fillMaxWidth()
.height(300.dp),
contentAlignment = Alignment.BottomCenter
) {
Text("Hello")
}
}
When my toolbar container has dynamic height, the initial scrolling position is wrong because it doesn't care about dynamic statusBarHeight. You can reproduce the issue by placing those components into toolbar scope.
I am using scrollStrategy = ScrollStrategy.ExitUntilCollapsed,
You can see the actual problem in the video: https://streamable.com/i4gwqm
Looks like PR #101 fixes this issue
@Composable
fun rememberStatusBarHeightDp(): Dp {
val view = LocalView.current
val density = LocalDensity.current
val statusBarHeightPx = remember {
ViewCompat.getRootWindowInsets(view)
?.getInsets(WindowInsetsCompat.Type.statusBars())
?.top ?: 0
}
return with(density) { statusBarHeightPx.toDp() }
}
Use this code for top padding