You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DropdownMenu展开后其下方OutlinedTextField无法输入内容的问题

Jetpack Compose 自动补全组件无法输入问题解决方案

根因

DropdownMenu 组件默认展开时会抢占焦点,同时拦截输入事件,导致 OutlinedTextField 失去焦点,无法继续接收用户输入。

修改方案

你只需要给 DropdownMenu 添加禁用焦点抢占的配置即可,核心修改点如下:

  • 给 DropdownMenu 传入 properties = PopupProperties(focusable = false),禁止菜单抢占输入框焦点
  • 保留原有逻辑的前提下,无需修改其他状态控制代码

修复后完整代码

import androidx.compose.ui.window.PopupProperties // 注意导入这个依赖类

var expanded by remember { mutableStateOf(false) }
val suggestions = remember { mutableStateListOf ("karan", "karanx", "karany") }
var selectedText by remember { mutableStateOf("") }
var dropDownWidth by remember { mutableStateOf(0) }
val focusManager = LocalFocusManager.current
Box() {
    OutlinedTextField(
        value = selectedText,
        onValueChange = {
            selectedText = it
            expanded  = true
        },
        modifier = Modifier.fillMaxWidth()
            .onSizeChanged {
                dropDownWidth = it.width
            }
            .onFocusChanged {
                expanded = it.isFocused
            },
        label = { Text("Label") }
    )
    DropdownMenu(
        expanded = expanded,
        onDismissRequest = {
            expanded = false
            focusManager.clearFocus()
        },
        // 新增下方配置禁止菜单抢占焦点
        properties = PopupProperties(focusable = false),
        modifier = Modifier
            .width(with(LocalDensity.current) { dropDownWidth.toDp() })
            .border(width = 2.dp,color = Color.Blue)
    ) {
        suggestions.forEach { label ->
            DropdownMenuItem(onClick = {
                selectedText = label
                expanded = false
                focusManager.clearFocus()
            }) {
                Text(text = label)
            }
        }
    }
}

额外说明

你代码注释中提到的为什么不能在OutlinedTextField的clickable修饰符里设置expanded = true,是因为OutlinedTextField本身已经内置了点击交互逻辑,外层额外添加的clickable会和内置逻辑产生冲突,当前你用onFocusChanged触发菜单展开是更合理的实现方式。

内容的提问来源于stack exchange,提问作者mrtechmaker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:06:04