android - 如何使用 Jetpack Compose 创建带有溢出菜单的工具栏?

标签 android android-jetpack-compose

如何在 Compose 中将 Toolbar 的菜单图标变成溢出?

Scaffold(
    topBar = {
        TopAppBar(
            title = {
                Text(text = "LayoutsCodelab")
            },
            actions = {
                IconButton(onClick = { /* doSomething() */ }) {
                    Icon(Icons.Filled.Favorite)
                }

                IconButton(onClick = { /* doSomething() */ }) {
                    Icon(Icons.Filled.Refresh)
                }

                IconButton(
                    onClick = { /* doSomething() */ }) {
                    Icon(Icons.Filled.Call)
                }

            }
        )
    },
    bottomBar = {
        BottomNavigationLayout()
    }
) { innerPadding ->
    PhotoCard(Modifier.padding(innerPadding))
}
我只希望工具栏菜单中的一个图标可见,将其他图标添加到溢出菜单中,就像使用 xml 使用 app:showAsAction="never"
<item
    android:id="@+id/action_sign_out"
    android:title="@string/toolbar_sign_out"
    app:showAsAction="never"/>

最佳答案

您必须自己提供 OverFlowMenu,例如:

@Preview
@Composable
fun PreviewOverflowMenu() {
    OverflowMenuTest()
}

@Composable
fun OverflowMenuTest() {
    var showMenu by remember { mutableStateOf(false) }

    TopAppBar(
        title = { Text("Title") },
        actions = {
            IconButton(onClick = { /*TODO*/ }) {
                Icon(Icons.Default.Favorite)
            }
            IconButton(onClick = { showMenu = !showMenu }) {
                Icon(Icons.Default.MoreVert)
            }
            DropdownMenu(
                expanded = showMenu,
                onDismissRequest = { showMenu = false }
            ) {
                DropdownMenuItem(onClick = { /*TODO*/ }) {
                    Icon(Icons.Filled.Refresh)
                }
                DropdownMenuItem(onClick = { /*TODO*/ }) {
                    Icon(Icons.Filled.Call)
                }
            }
        }
    )
}
编辑:为 Compose 1.0.0-beta08 更新

关于android - 如何使用 Jetpack Compose 创建带有溢出菜单的工具栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65373652/

相关文章:

android - 如何创建一个 Jetpack Compose Column,其中中间的 child 是可滚动的,但所有其他 child 总是可见的?

android - Jetpack Compose LazyColumn 的 ItemDecoration 是什么?

android - Retrofit2:应为 BEGIN_ARRAY 但在第 1 行第 268 列路径 $[0].images 处为 STRING

android - jetpack 中的 TopAppBar 在没有脚手架的情况下撰写时出现错误

kotlin - Android Jetpack Compose 协调器布局等效项

android - picasso 每次滚动时都会在 ListView 中刷新图像

android - Jetpack compose (Alpha 1.0.0) 用于生产版本

Android PopupWindow 高程不显示阴影

android - spannable 字符串在不同的设备上给出不同的结果

android - AutoCompleteTextView 改变下划线颜色