在 Compose 中让 PopUpMenu 出现在键盘后面?

问题描述 投票:0回答:1

我目前正在 Android 应用程序中开发下拉菜单。它工作得很好,但是,键盘总是位于弹出菜单后面,我希望键盘将其覆盖。当我说 PopUpMenu 时,我实际上指的是此处所示的下拉菜单。

DropdownMenu(
        properties = PopupProperties(focusable = false),
        expanded = expandedState,
        onDismissRequest = { expanded = false },
        ) {}

enter image description here

android material-ui android-jetpack-compose popup
1个回答
0
投票

使用

PopupProperties
并将
focusable
属性设置为
true
。这将确保下拉菜单不会干扰键盘输入。

DropdownMenu(
    expanded = expandedState,
    onDismissRequest = { expandedState = false },
    properties = PopupProperties(
        focusable = true // Makes the popup interact with the keyboard properly
    )
) {
    // Your menu items here
}

调整 Z 索引(如果需要): 如果下拉菜单与键盘重叠,您可以控制 z 索引以优先考虑键盘:

Modifier.zIndex(0f) // Set the dropdown below the keyboard

手动处理键盘可见性:您还可以使用LocalSoftwareKeyboardController来检测键盘状态并相应地调整下拉菜单。

val keyboardController = LocalSoftwareKeyboardController.current

DropdownMenu(
    expanded = expandedState,
    onDismissRequest = {
        expandedState = false
        keyboardController?.hide() // Dismiss the keyboard
    },
    properties = PopupProperties(focusable = true)
) {
    // Menu items
}

此设置可确保当键盘聚焦时下拉菜单正确隐藏,防止任何视觉冲突。

© www.soinside.com 2019 - 2024. All rights reserved.