我正在使用 jetbrain compose 2020.3.3 版本,并且我正在实现类似于下面提到的代码的 Dropdown 示例。根据我的分析,“DropDownmenu”在内部使用“Popup”,默认情况下popup focusable 为false,并且“Dropdownmenu”中没有选项可以使其成为true,因此当下拉列表展开时,在下拉列表之外单击不会关闭下拉列表。似乎扩展的下拉列表正在充当阻止弹出窗口`
@Composable
fun DropdownDemo() {
var expanded = remember { mutableStateOf(false) }
val items = listOf("A", "B", "C", "D", "E", "F")
val disabledValue = "B"
var selectedIndex = remember { mutableStateOf(0) }
Box(modifier = Modifier.fillMaxSize().wrapContentSize(Alignment.TopStart)) {
Text(items[selectedIndex.value],modifier = Modifier.fillMaxWidth().clickable(onClick = { expanded.value = true }).background(
Color.Gray))
DropdownMenu(
expanded = expanded.value,
onDismissRequest = { expanded.value = false },
modifier = Modifier.fillMaxWidth().background(
Color.Red)
) {
items.forEachIndexed { index, s ->
DropdownMenuItem(onClick = {
selectedIndex.value = index
expanded.value = false
}) {
val disabledText = if (s == disabledValue) {
" (Disabled)"
} else {
""
}
Text(text = s + disabledText)
}
}
}
}
}`