scrollAway
Functions summary
Modifier |
Modifier.scrollAway(Scroll an item vertically in/out of view based on scroll state provided by a scrolling list. |
Functions
Modifier.scrollAway
fun Modifier.scrollAway(
scrollInfoProvider: ScrollInfoProvider,
screenStage: () -> ScreenStage
): Modifier
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.
Example of using ScrollAway directly (in practice, it is recommended to use AppScaffold and ScreenScaffold to provide the correct scroll away behavior by default):
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.wear.compose.foundation.ScrollInfoProvider import androidx.wear.compose.foundation.lazy.TransformingLazyColumn import androidx.wear.compose.foundation.lazy.rememberTransformingLazyColumnState import androidx.wear.compose.material3.ButtonDefaults import androidx.wear.compose.material3.FilledTonalButton import androidx.wear.compose.material3.ListHeader import androidx.wear.compose.material3.ListHeaderDefaults import androidx.wear.compose.material3.ScreenStage import androidx.wear.compose.material3.Text import androidx.wear.compose.material3.TimeText import androidx.wear.compose.material3.curvedText import androidx.wear.compose.material3.scrollAway import androidx.wear.compose.material3.timeTextSeparator val state = rememberTransformingLazyColumnState() Box(modifier = Modifier.fillMaxSize()) { TransformingLazyColumn(state = state, modifier = Modifier.fillMaxSize()) { item { ListHeader( modifier = Modifier.minimumVerticalContentPadding( ListHeaderDefaults.minimumTopListContentPadding, ListHeaderDefaults.minimumBottomListContentPadding, ) ) { Text( modifier = Modifier.fillMaxWidth(), text = "TLC", textAlign = TextAlign.Center, ) } } items(50) { FilledTonalButton( modifier = Modifier.fillMaxWidth() .padding(horizontal = 36.dp) .minimumVerticalContentPadding( ButtonDefaults.minimumVerticalListContentPadding ), 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("List") timeTextSeparator() curvedText(time) }, ) }
| Parameters | |
|---|---|
scrollInfoProvider: ScrollInfoProvider |
Used as the basis for the scroll-away implementation, based on the state of the scrollable container. See |
screenStage: () -> ScreenStage |
Function 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. |