Hi all - trying to make my `LargeTopAppBar` collap...
# compose
x
Hi all - trying to make my
LargeTopAppBar
collapse when you scroll on the list view - but it doesn't seem to work. full code in the 🧵
Copy code
val scrollState = rememberTopAppBarScrollState()
val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(state = scrollState)

LargeTopAppBar(
  modifier = Modifier.windowInsetsPadding(WindowInsets.statusBars),
  ..
  scrollBehavior = scrollBehavior
)
✅ 1
Am i setting this up wrong? 🤔
Copy code
val scrollState = rememberTopAppBarScrollState()
val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(state = scrollState)

LargeTopAppBar(
  modifier = Modifier.windowInsetsPadding(WindowInsets.statusBars),
  title = {
    if(state is Idle) Column {
      Text(
        text = state.entity.request.parts.values.joinToString(" • "),
        style = MaterialTheme.typography.headlineSmall
      )

      Text(
        text = state.entity.request.parts.keys.map { it.text }.joinToString(" • "),
        style = MaterialTheme.typography.bodySmall
      )
    }
  },
  actions = {
    if (isStacked) IconButton(onClick = onFullScreen){
      Icon(Icons.Rounded.OpenInFull, null)
    }
  },
  navigationIcon = {
    IconButton(
      onClick = onBack,
      modifier = Modifier.padding(end = 8.dp)
    ) {
      val icon: ImageVector = when {
        isStacked -> Icons.Rounded.Close
        else -> Icons.Rounded.ArrowBack
      }

      Icon(
        painter = rememberVectorPainter(icon),
        contentDescription = null, // TODO
      )
    }
  },
  scrollBehavior = scrollBehavior
)
j
how are you connecting the behaviour to your Scaffold or LazyColumn?
x
Am i supposed to?
j
yeah you need to link that scroll behaviour with your scrollable content, and you can probably drop the
val scrollState = rememberTopAppBarScrollState()
altogether in your case so your code becomes something like:
Copy code
val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior()

Scaffold(
    modifier = Modifier
        .windowInsetsPadding(WindowInsets.statusBars)
        .nestedScroll(scrollBehavior.nestedScrollConnection),
    topBar = {
        LargeTopAppBar(
            ...
            scrollBehavior = scrollBehavior
        )
    }
    content = { ... }
)
x
aha! I missed that part! Thanks 🙌
j
no worries!