Build apps faster with our new App builder! Check it out →

scrollAway

Android

Modifier in Wear Material 3 Compose

Scroll an item vertically in/out of view based on scroll state provided by a scrolling list. Typically used to scroll a [TimeText] item out of view as the user starts to scroll a vertically scrollable list of items upwards and bring additional items into view.

Last updated:

Installation

dependencies {
   implementation("androidx.wear.compose:compose-material3:1.0.0-alpha27")
}

Overloads


fun Modifier.scrollAway(
    scrollInfoProvider: ScrollInfoProvider,
    screenStage: () -> ScreenStage
): Modifier

Parameters

namedescription
scrollInfoProviderUsed as the basis for the scroll-away implementation, based on the state of the scrollable container. See [ScrollInfoProvider] methods for creating a ScrollInfoProvider from common lists such as [ScalingLazyListState].
screenStageFunction that returns the screen stage of the active screen. Scrolled away items are shown when the screen is new, then scrolled away or hidden when scrolling, and finally shown again when idle.

Code Example

ScrollAwaySample

@Composable
fun ScrollAwaySample() {
    val state = rememberScalingLazyListState()

    Box(modifier = Modifier.fillMaxSize()) {
        ScalingLazyColumn(
            state = state,
            modifier = Modifier.fillMaxSize(),
            autoCentering = AutoCenteringParams(itemIndex = 10)
        ) {
            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 = {
                text("ScrollAway")
                separator()
                time()
            }
        )
    }
}
by @alexstyl