我有一个NavHost,看起来像这样:
NavHost(
navController = navController,
startDestination = Screen.MAIN.route,
modifier = modifier
) {
dialog(
Screen.LOGIN.route,
dialogProperties = DialogProperties(
usePlatformDefaultWidth = false,
dismissOnBackPress = false,
dismissOnClickOutside = false
)
) { LoginScreen() }
composable(Screen.MAIN.route) { MainScreen() }
}
对于可组合的屏幕,我可以配置我的MainActivity的windowSoftInputMode来调整大小以及其他参数,如:
WindowCompat.setDecorFitsSystemWindows(window, false)
但是我似乎找不到一种方法来配置我的对话框的显示方式。它似乎使用adjustPan功能,正如我所看到的,当键盘出现时,它会将状态栏向上推。如何配置此对话框,或者如何至少更改上述对话框的windowSoftInputMode?
EDIT我尝试过从上下文访问window,并显式设置所需参数,但似乎没有任何效果
val context = LocalContext.current
SideEffect {
val window = context.findWindow()!!
WindowCompat.setDecorFitsSystemWindows(window, false)
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
}
1条答案
按热度按时间ny6fqffe1#
在NavHost对话框中,您可以使用
LocalView.current.parent as DialogWindowProvider
来获取对话框窗口。使用此选项可以设置softInputMode和许多其他属性。