具有 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 可以滚动到底部。我使用以下库作为插图:
所以我有一个 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 可以滚动到底部。我使用以下库作为插图: