Поле со списком с Compose for Desktop: кнопка показа всплывающего окна ниже

В следующем автономном примере:

      import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.window.Window
import androidx.compose.ui.window.application

fun main() = application {
    Window(
        onCloseRequest = ::exitApplication,
        title = "Combobox Test"
    ) {
        MaterialTheme {
            comboboxTest()
        }
    }
}

@Composable
private fun comboboxTest() {
    Column(
        modifier = Modifier.fillMaxWidth(),
        verticalArrangement = Arrangement.Center,
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        val expanded = remember { mutableStateOf(false) }
        val list = listOf("first", "second", "third", "forth", "fifth")
        val itemSelected = remember { mutableStateOf(0) }
        Button(onClick = {expanded.value = !expanded.value}) {
            Text(text = list[itemSelected.value])
        }
        DropdownMenu(expanded = expanded.value, onDismissRequest = {expanded.value = false}) {
            list.forEachIndexed { index, text ->
                DropdownMenuItem(onClick = {
                    expanded.value = false
                    itemSelected.value = index
                }) {
                    Text(text = text)
                }
            }
        }
    }
}

когда отображается всплывающее окно, оно отображается в левой части окна.

Как отобразить всплывающее окно под кнопкой (независимо от того, где находится кнопка), возможно, выровненное по левому краю с кнопкой?

0 ответов

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