android 定制材料3 LargeTopAppBar

kx1ctssn  于 2023-01-28  发布在  Android
关注(0)|答案(1)|浏览(135)

我目前正在编写一个使用Material 3中的LargeTopAppBar的标题。问题是,标题不是很容易自定义,滚动动画也不是(使用nestedScroll)。我想在标题下面添加一个副标题,一旦AppBar折叠,它就不会显示在smallTitle中。我还想知道是否有一种方法可以自定义标题的实际动画。
我知道材料3仍然是一个阿尔法,但我会非常好奇,看看是否有一些解决方案或变通方案。

qxsslcnc

qxsslcnc1#

    • LargeTopAppBar**是一个material3可组合工具,在可定制性方面有其局限性,但易于使用。

如果您需要一些不同的东西,您可以简单地为屏幕支架中的topBar参数创建一个可组合函数,它将实现您需要的所有特性。

Scaffold (
    topBar = { customTopBar() }
) { innerPadding ->
    YourScreen(modifier = modifier.padding(innerPadding))
}

如果您已经在代码中使用了Scaffold,那么只需使用when()语句并为每个屏幕传递适当的可组合对象即可!
对于副标题,您可以使用一个带有两个Text的简单列,

Column {
    Text(text = "Title")

    if ( /* topBar state condition */ )
        Text(text = "Subtitle")
}

对于应用栏的其余部分,您可以使用包含所有元素(取决于您的栏)的Row,如下所示:

Row(
    verticalAlignment = Alignment.CenterVertically
    horizontalArrangement = Arrangement.SpaceBetween
) {
    Row {
        IconButton(...) // For the back button

        // Your title and subtitle Column()
        Column {
            Text(text = "Title")

            if ( /* topBar state condition */ )
                Text(text = "Subtitle")
        }
    }

    // Rest of the IconButtons if needed
    Row {
        IconButton(...)
        IconButton(...)
    }
}

抱歉,因为我不太精通Jetpack合成动画,但它应该很容易实现,因为他们的库非常简单易用,您可以随时检查他们的website上的文档。
Material3元素仍然是alpha,但是使用简单的surface/box/etc ...元素,你可以做出大多数需要的定制设计。
希望我能帮上忙!

相关问题