Scroll an item vertically in/out of view based on scroll state provided by a scrolling list.
@Composable
fun ScrollAwaySample() {
val state = rememberScalingLazyListState()
Box(modifier = Modifier.fillMaxSize()) {
ScalingLazyColumn(state = state, modifier = Modifier.fillMaxSize()) {
item {
ListHeader {
Text(
modifier = Modifier.fillMaxWidth(),
text = "ScalingLazyColumn",
textAlign = TextAlign.Center,
)
}
}
items(50) {
FilledTonalButton(
modifier = Modifier.fillMaxWidth().padding(horizontal = 36.dp),
onClick = {},
label = { Text("Item ${it + 1}") },
)
}
}
TimeText(
// In practice, it is recommended to use the [AppScaffold] and [ScreenScaffold],
// so that the Material3 scroll away behavior is provided by default, rather than using
// [Modifier.scrollAway] directly.
modifier =
Modifier.scrollAway(
scrollInfoProvider = ScrollInfoProvider(state),
screenStage = {
if (state.isScrollInProgress) ScreenStage.Scrolling else ScreenStage.Idle
},
),
content = { time ->
curvedText("ScrollAway")
timeTextSeparator()
curvedText(time)
},
)
}
}