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
                                }
                            )
                        }
                    }
                }
            }
        }
    }
}
相关推荐
艾莉丝努力练剑3 小时前
【MYSQL】MYSQL学习的一大重点:基本查询(下)
android·数据库·学习·mysql·面试·八股文
三少爷的鞋3 小时前
Android 中coroutineScope 和 supervisorScope 到底怎么选?先搞清楚 Exception 和 Result
android
其实防守也摸鱼5 小时前
KMP全栈开发:从Android到AI Agent的技术演进与实践
android·运维·网络·人工智能·学习·安全·macos
YM52e10 小时前
鸿蒙Flutter Padding内边距:EdgeInsets详解
android·学习·flutter·华为·harmonyos·鸿蒙
Rex叶然14 小时前
ScreenMatch适配安卓屏幕脚本,用于老项目
android·screenmatch·安卓屏幕适配
阿pin14 小时前
Android随笔-Activity启动流程深度分析
android·activity启动流程
zzq779715 小时前
加固包闪退四象限定位:targetSdk 与保护策略实战解析
android·安全·安卓·安全架构
我命由我1234517 小时前
Android 开发问题:Cannot resolve method ‘repeat‘ in ‘String‘
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
光头闪亮亮17 小时前
Fyne ( go跨平台GUI )项目实战-scanner摄像头扫码组件开发技术详解
android·go
Android打工仔18 小时前
Continuation 到底是谁创建的?
android·kotlin