显示下拉列表时,OutlinedTextField 在 jetpack 撰写中失去焦点

Mar*_*vel 3 android android-jetpack-compose

我有以下代码:

Box(
    Modifier.fillMaxWidth(),
    contentAlignment = Alignment.Center
) {
    OutlinedTextField(
        value = text,
        onValueChange = {
            text = it
            if (text.length >= 3) {
                viewModel.getSuggestions(text)
            }
        },
        label = { Text("Search") },
        modifier = Modifier.fillMaxWidth(),
        singleLine = true,
        leadingIcon = {
            Icon(
                painter = painterResource(id = R.drawable.ic_search),
                contentDescription = null,
                modifier = Modifier.padding(16.dp, 0.dp, 8.dp, 0.dp),
                tint = Color.Unspecified
            )
        },
        shape = RoundedCornerShape(50)
    )

    DropdownMenu(expanded = suggestions.value.isNotEmpty(),
        modifier = Modifier
            .fillMaxWidth(0.92f),
        onDismissRequest = {  }) {

        for (suggestion in suggestions.value) {
            DropdownMenuItem(onClick = {
                viewModel.searchWord(suggestion)
            }) {
                Text(suggestion)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一本字典,屏幕上方有这个OutlinedTextField

当我搜索一个单词时,我会根据输入获得建议并将其显示在DropdownMenu.

我面临的问题是,当DropdownMenu显示 时,键盘消失,但焦点仍然在Text字段上。我该如何解决这个问题,最重要的是,为什么会发生这种情况?我知道它会根据状态变化重新绘制 UI,但为什么它不保持键盘打开。

小智 13

DropdownMenu(properties = PopupProperties(focusable = false))
Run Code Online (Sandbox Code Playgroud)

检查这个