как закрыть раскрывающееся всплывающее окно при нажатии вне раскрывающегося всплывающего окна (составить jetbrain)?

Я использую jetbrain compose версии 2020.3.3, и я реализую пример раскрывающегося списка, аналогичный приведенному ниже коду. согласно моему анализу «DropDownmenu» внутренне с использованием «Popup» и по умолчанию всплывающее окно с фокусировкой ложно, и в «Dropdownmenu» нет опции, чтобы сделать это правдой, поэтому, когда раскрывающийся список раскрывается, щелчок за пределами раскрывающегося списка не закрывает раскрывающийся список. Кажется, что расширенный раскрывающийся список действует как блокирующее всплывающее окно `

      @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)
                    }
                }
            }
        }
    }`

0 ответов

Другие вопросы по тегам