Sobes.tech
Назад к вопросам
Junior — Middle
70

Работали ли вы с компонентом Collapsing Toolbar в Jetpack Compose?

Компании, где спрашивали
Ubic

Ответ от нейросети

sobes.tech AI

В Jetpack Compose нет встроенного компонента Collapsing Toolbar, как в классическом Android с CoordinatorLayout и AppBarLayout. Однако, можно реализовать подобное поведение с помощью LazyColumn или NestedScrollConnection, отслеживая прокрутку и изменяя размер или видимость верхнего компонента.

Пример упрощённой реализации коллапсирующего тулбара:

var toolbarHeight by 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))
        }
    }
}

Для более сложных случаев можно использовать библиотеки или создавать кастомные решения с NestedScroll APIs.