Sobes.tech
Junior — Middle

Ar dirbote su Collapsing Toolbar komponentu Jetpack Compose?

sobes.tech AI

Atsakymas iš AI

Jetpack Compose nėra įmontuoto Collapsing Toolbar komponento, kaip klasikinėje Android versijoje su CoordinatorLayout ir AppBarLayout. Tačiau panašų elgesį galima įgyvendinti naudojant LazyColumn arba NestedScrollConnection, stebint slinkimą ir keičiant viršutinio elemento dydį ar matomumą.

Supaprastintas collapsible toolbar pavyzdys:

var toolbarHeight remember { mutableStateOf(200.dp) }
val scrollState = rememberLazyListState()

LaunchedEffect(scrollState.firstVisibleItemScrollOffset) {
    toolbarHeight = (200 - scrollState.firstVisibleItemScrollOffset.dp).coerceAtLeast(56.dp)
}

Column {
    Box(modifier = Modifier
        .height(toolbarHeight)
        .fillMaxWidth()
        .background(Color.Blue)) {
        Text("Collapsing Toolbar", color = Color.White, modifier = Modifier.align(Alignment.Center))
    }
    LazyColumn(state = scrollState) {
        items(100) { index ->
            Text("Item #$index", modifier = Modifier.padding(16.dp))
        }
    }
}

Daugiau sudėtingesniems atvejams galima naudoti bibliotekas arba kurti individualius sprendimus naudojant NestedScroll API.