Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在compose中自动完成文本视图_Android_Android Jetpack Compose - Fatal编程技术网

Android 在compose中自动完成文本视图

Android 在compose中自动完成文本视图,android,android-jetpack-compose,Android,Android Jetpack Compose,我想在compose中创建一个自动完成的文本视图,并创建了一个包含TextField和下拉菜单的composable。我在这个解决方案中看到的问题是,当下拉菜单展开时,文本字段不再可用,我无法在其中键入任何文本。有没有关于如何解决这个问题的建议?代码如下 @Composable fun AutoCompleteText( value: String, onValueChange: (String) -> Unit, onOptionSelected: (String

我想在compose中创建一个自动完成的文本视图,并创建了一个包含
TextField
下拉菜单的composable。我在这个解决方案中看到的问题是,当下拉菜单展开时,文本字段不再可用,我无法在其中键入任何文本。有没有关于如何解决这个问题的建议?代码如下

@Composable
fun AutoCompleteText(
    value: String,
    onValueChange: (String) -> Unit,
    onOptionSelected: (String) -> Unit,
    modifier: Modifier = Modifier,
    label: @Composable (() -> Unit)? = null,
    suggestions: List<String> = emptyList()
) {
    Column(modifier = modifier) {
        OutlinedTextField(
            value = value,
            onValueChange = { text -> if (text !== value) onValueChange(text) },
            modifier = Modifier.fillMaxWidth(),
            label = label,
        )
        DropdownMenu(
            expanded = suggestions.isNotEmpty(),
            onDismissRequest = {  },
            modifier = Modifier.fillMaxWidth()
        ) {
            suggestions.forEach { label ->
                DropdownMenuItem(onClick = {
                    onOptionSelected(label)
                }) {
                    Text(text = label)
                }
            }
        }
    }
}
@Composable
有趣的自动完成文本(
值:字符串,
onValueChange:(字符串)->单位,
onOptionSelected:(字符串)->单位,
修饰符:修饰符=修饰符,
标签:@Composable(()->Unit)?=null,
建议:List=emptyList()
) {
列(修饰符=修饰符){
大纲文本字段(
值=值,
onValueChange={text->if(text!==value)onValueChange(text)},
modifier=modifier.fillMaxWidth(),
标签=标签,
)
下拉菜单(
expanded=建议。isNotEmpty(),
onDismissRequest={},
modifier=modifier.fillMaxWidth()
) {
suggestions.forEach{label->
下拉菜单项(onClick={
onOptionSelected(标签)
}) {
文本(文本=标签)
}
}
}
}
}

下拉菜单
有一个名为的属性,可用于禁用聚焦性。这将允许您继续在
OutlinedTextField
中键入内容:

OutlinedTextField(
值=值,
onValueChange={text->if(text!==value)onValueChange(text)},
modifier=modifier.fillMaxWidth(),
标签=标签,
)
下拉菜单(
expanded=建议。isNotEmpty(),
onDismissRequest={},
modifier=modifier.fillMaxWidth(),
//这一行可以完成你想要的
属性=PopupProperty(可聚焦=false)
) {
suggestions.forEach{label->
下拉菜单项(onClick={
onOptionSelected(标签)
}) {
文本(文本=标签)
}
}
}

非常有魅力,谢谢!