标签: android-compose-appbar

如何在 Jetpack Compose 中添加工具栏?

我需要在我的 Android 应用程序中添加一个工具栏,其中包含如下所示的列表。我正在使用Jetpack Compose创建 UI。下面是我用来绘制主视图的可组合函数。

@Composable
fun HomeScreenApp() {
    showPetsList(dogs = dogData)
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

android android-toolbar android-jetpack android-jetpack-compose android-compose-appbar

5
推荐指数
2
解决办法
8215
查看次数

Jetpack Compose 的工具栏结构化行为

想象一下 Android 中工具栏的常见行为。

Toolbar您在 中定义一个小部件Activity,并可以在片段内使用onCreateOptionsMenu和访问它。onOptionsItemSelected

然而,这样的事情对于普通的 Jetpack Compose 来说是不可能的,因为无法访问中Toolbar定义的。ActivityScaffold

所以想想这个场景。你有一个Activity, ,Scaffold里面有定义,还有一个NavHostthat Scaffold。包含NavHost应用程序的所有子页面(其他可组合项)。标题可以通过导航目标侦听器进行处理,剩下的就是工具栏的操作。

您将如何根据您所在的当前页面/可组合项更改工具栏操作?并处理这些操作的点击?

PS:在每个页面中使用工具栏并不是一个解决方案,因为在动画页面之间切换时,工具栏会消失并重新出现在每个页面上,这会导致糟糕的用户体验。

android android-jetpack-compose android-compose-appbar

4
推荐指数
1
解决办法
1599
查看次数

如何在 Jetpack Compose 中传递条件参数?

我想隐藏navigationIcon,但是当我通过nullUnit图标空间仍然可见时,如下图所示。

菜单预览

@Composable
fun DefaultScaffold(
    title: String? = null,
    icon: ImageVector? = null,
    content: @Composable() () -> Unit
) {
    Scaffold(
        topBar = {
            TopAppBar(
                title = {
                    if (title != null) {
                        Text(text = "My Title")
                    }
                },
                navigationIcon = {
                    if (icon != null) {
                        IconButton(
                            onClick = {}
                        ) {
                            Icon(imageVector = Icons.Filled.Close, contentDescription = null)
                        }
                    } else Unit
                }
            )
        }
    ) {
        content()
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-jetpack android-jetpack-compose android-compose-appbar

3
推荐指数
2
解决办法
8493
查看次数