Mohammad Sianaki
10/09/2021, 1:25 PM@Composable
fun Demo() {
val scroll = rememberScrollState(0)
Column(modifier = Modifier.fillMaxSize()) {
CollapsingToolbar(scroll = scroll.value, title = "Screen Title")
Body(scroll)
}
}
@Composable
fun Body(scroll: ScrollState) {
Column(
modifier = Modifier
.fillMaxSize()
.verticalScroll(scroll)
) {
repeat(5) {
Box(
modifier = Modifier
.fillMaxWidth()
.height(200.dp)
.background(Color.Red)
)
}
}
}
@Composable
fun CollapsingToolbar(
scroll: Int,
title: String,
onNavigateUpClicked: () -> Unit = {},
) {
val collapseRange = with(LocalDensity.current) {
(150.dp - 56.dp).toPx()
}
val collapseFraction = (scroll / collapseRange).coerceIn(0f, 1f)
Box(
modifier = Modifier
.fillMaxWidth()
.heightIn(min = 56.dp)
.wrapContentHeight()
.background(Color.Green),
) {
IconButton(
onClick = onNavigateUpClicked,
modifier = Modifier
.padding(start = 8.dp, top = 8.dp)
.background(Color.Cyan)
.align(Alignment.TopStart)
) {
Icon(
imageVector = Icons.Default.ArrowBack,
contentDescription = null,
modifier = Modifier.background(Color.Red)
)
}
Text(
text = title,
style = MaterialTheme.typography.h6,
modifier = Modifier
.padding(start = 24.dp, top = 150.dp * (1 - collapseFraction))
.align(Alignment.CenterStart)
.offset(x = 32.dp * collapseFraction)
)
}
}
Jan Bína
10/09/2021, 2:09 PMZach Klippenstein (he/him) [MOD]
10/12/2021, 2:19 AMZach Klippenstein (he/him) [MOD]
10/12/2021, 2:20 AM