Jetpack Compose Desktop:如何禁用TextField右键的复制/粘贴/剪切菜单?
禁用Jetpack Compose Desktop中TextField的右键上下文菜单
在Jetpack Compose Desktop开发场景下,仅通过LocalTextToolbar设置EmptyTextToolbar无法禁用TextField右键弹出的复制、粘贴、剪切上下文菜单——这是因为Desktop平台的右键菜单由系统层面处理,需要针对性拦截。
解决方案
拦截系统右键事件
给TextField添加Modifier.onContextMenu修饰符,消费右键事件以阻止系统菜单弹出:var text by remember { mutableStateOf("") } TextField( value = text, onValueChange = { text = it }, modifier = Modifier.onContextMenu { // 消费右键事件,不触发系统上下文菜单 true } )双重拦截(同时处理Compose内部菜单)
若需要同时禁用Compose自身的文本选中工具栏,可结合LocalTextToolbar设置,确保完全屏蔽相关操作菜单:var text by remember { mutableStateOf("") } CompositionLocalProvider( LocalTextToolbar provides EmptyTextToolbar ) { TextField( value = text, onValueChange = { text = it }, modifier = Modifier.onContextMenu { true } ) }
说明:onContextMenu修饰符负责拦截Desktop系统的右键点击事件,返回true表示事件已被处理;LocalTextToolbar的设置则针对Compose框架内部的文本操作工具栏,两者结合可彻底禁用复制、粘贴、剪切相关的上下文菜单。
内容的提问来源于stack exchange,提问作者LittleLee
相关产品推荐
相关产品推荐

