如何在 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/