Sobes.tech
Junior — Middle

Έχετε εργαστεί με το συστατικό Collapsing Toolbar στο Jetpack Compose;

sobes.tech AI

Απάντηση από AI

Στο Jetpack Compose δεν υπάρχει ενσωματωμένο συστατικό Collapsing Toolbar, όπως στο κλασικό Android με CoordinatorLayout και AppBarLayout. Ωστόσο, μπορεί να υλοποιηθεί μια παρόμοια συμπεριφορά χρησιμοποιώντας LazyColumn ή NestedScrollConnection, παρακολουθώντας την κύλιση και τροποποιώντας το μέγεθος ή την ορατότητα του επάνω στοιχείου.

Παράδειγμα απλοποιημένης υλοποίησης μιας collapsible toolbar:

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))
        }
    }
}

Για πιο πολύπλοκες περιπτώσεις, μπορούν να χρησιμοποιηθούν βιβλιοθήκες ή να δημιουργηθούν προσαρμοσμένες λύσεις με τις API του NestedScroll.