具有softInputMode AdjustResize的全屏DialogFragment

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

所以我有一个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以调整AdjustSize。我就是无法正常工作。仅当我删除上面的布局标志时,它才有效。它在正常片段中工作正常。有人知道我在这里缺少什么吗,或者用DialogFragment不可能吗?

android android-dialogfragment
1个回答
0
投票

所以我的问题不是DialogFragment,而是当您在系统栏下绘制布局时,Android不遵守adjustResize的事实。为避免这种情况,您需要侦听Window插图并将其作为填充应用到布局中,以便在打开键盘时,底部插图使您的整个内容减小该数量,并且ScrollView可以滚动到底部。我将以下库用于插图:

https://github.com/chrisbanes/insetter

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