具有 softInputMode adjustResize 的全屏 DialogFragment

Fullscreen DialogFragment with softInputMode adjustResize

所以我有一个 DialogFragment,我使用以下代码在 onResume 中扩展到整个屏幕:

    val params = dialog?.window?.attributes
    params?.width = ViewGroup.LayoutParams.MATCH_PARENT
    params?.height = ViewGroup.LayoutParams.MATCH_PARENT
    dialog?.window?.attributes = params as WindowManager.LayoutParams

我也用了下面的样式:

<style name="AppTheme.FullscreenDialogFragment" parent="Theme.MaterialComponents.Light.Dialog">
    <item name="android:windowIsFloating">false</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:windowBackground">@color/background1</item>
</style>

现在我也希望它在状态栏下扩展,我通过以下方式执行此操作(我还将状态栏颜色设置为透明):

dialog?.window?.decorView?.systemUiVisibility =
    View.SYSTEM_UI_FLAG_LAYOUT_STABLE.addFlag(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)

一切正常,但现在我想将 softInputMode 调整为 adjustResize。我就是无法让它工作。它只有在我删除上面的布局标志时才有效。它在普通片段中工作正常。有没有人知道我在这里遗漏了什么,或者 DialogFragment 是不可能的?

所以我的问题不是 DialogFragment,而是当您在系统栏下绘制布局时 Android 不支持 adjustResize 的事实。为防止这种情况,您需要收听 Window 插图并将它们作为填充应用到您的布局中,这样当键盘打开时,底部插图会使您的整个内容变小,并且 ScrollView 可以滚动到底部。我使用以下库作为插图:

https://github.com/chrisbanes/insetter