android compose DropdownMenu 菜单项列表 使用

android compose DropdownMenu 菜单项列表 使用

复制代码
/**
 * Author : wn
 * Email : maoning20080809@163.com
 * Date : 2026/1/7 20:33
 * Description : 菜单项列表
 */
class DropdownMenuActivity : ComponentActivity(){

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContent {
            testDropdownMenu()
        }
    }

    @Preview
    @Composable
    private fun testDropdownMenu() {
        var expanded by remember { mutableStateOf(false) }
        var items = listOf("菜单1", "菜单2", "菜单3")
        var selectedIndex by remember { mutableStateOf(0) }

        Column(
            modifier = Modifier.fillMaxSize(),
            horizontalAlignment = Alignment.CenterHorizontally
        ) {
            Text(text = "DropdownMenu菜单项列表")

            Spacer(modifier = Modifier.height(20.dp))

            Box(
                modifier = Modifier.fillMaxWidth(),
                contentAlignment = Alignment.Center
            ) {
                // 将 Button 和 DropdownMenu 放在同一个 Box 中
                Box {
                    Button(onClick = {
                        expanded = true
                    }) {
                        Text(text = items[selectedIndex])
                    }

                    // DropdownMenu 默认会锚定到调用它的位置
                    // 这里它会在 Button 的位置弹出
                    DropdownMenu(
                        expanded = expanded,
                        onDismissRequest = { expanded = false },
                        offset = DpOffset(x = 60.dp, y = 0.dp) // 向右偏移 60dp(大约在右下角)
                    ) {
                        items.forEachIndexed { index, label ->
                            DropdownMenuItem(
                                text = { Text(text = label) },
                                onClick = {
                                    selectedIndex = index
                                    expanded = false
                                }
                            )
                        }
                    }
                }
            }
        }
    }
}
相关推荐
小书房4 小时前
Kotlin的by
android·开发语言·kotlin·委托·by
jinanwuhuaguo5 小时前
(第二十八篇)OpenClaw成本与感知的奇点——从“Token封建制”到“全民养虾”的本体论地基
android·人工智能·kotlin·拓扑学·openclaw
xxjj998a5 小时前
Laravel4.x核心特性全解析
android·mysql·laravel
JoshRen6 小时前
2026教程:在Android Termux中集成Gemini 3镜像站实现移动端文档自动处理与摘要生成(附国内免费方案)
android
诸神黄昏EX7 小时前
Android Google KEY
android
一起搞IT吧7 小时前
Android性能系列专题理论之十一:block IO问题分析思路
android·嵌入式硬件·智能手机·性能优化
小妖6668 小时前
怎么用 tauri 创建编译 android 应用程序
android·tauri
鸟儿不吃草9 小时前
安卓实现左右布局聊天界面
android·开发语言·python
xxjj998a10 小时前
Laravel 1.x:PHP框架的原始魅力
android·php·laravel
formula1000010 小时前
在iOS/安卓上远程连接任何 Agent!Claude、Codex、Copilot、Gemini、OpenCode 等
android·copilot