键盘打开时如何调整对话框大小?

Ank*_*009 0 android resize dialog

我想要做什么:键盘应该显示在对话框的底部。

代码:我正在扩展 Dialog 类。

  window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT)
        window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)
        window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

  1. window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)

  2. window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)

正如我在这里学习的那样, SOFT_INPUT_ADJUST_RESIZE 应该可以工作,但我无法弄清楚为什么它在我的情况下不起作用?

登录画面

Fro*_*and 5

将以下属性添加到您的活动标签 (AndroidManifest.xml)

android:windowSoftInputMode="adjustResize"
Run Code Online (Sandbox Code Playgroud)

您还需要在 OnCreate 函数(MainActivity.java)中添加以下代码

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Run Code Online (Sandbox Code Playgroud)

这解决了问题,并且在所有分辨率模拟器和三星设备上都运行良好。不过,它确实在 Google Nexus S 设备上失败了,我可以再次看到隐藏 EditText 的虚拟键盘的相同问题。

您可以尝试使用以下代码根据键盘状态调整对话框。

alertDialog.getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
Run Code Online (Sandbox Code Playgroud)

注意-:如果您使用 Dialog 而不是 alert Dialog,请执行以下更改。

创建一个样式文件,例如 dialog.xml。把下面的代码放进去。

<style name="DialogStyle" parent="@android:style/Theme.Black.NoTitleBar.Fullscreen">
    <item name="android:windowFullscreen">false</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowSoftInputMode">stateUnchanged</item>
    <item name="android:windowBackground">#22AAEA</item>
</style>
Run Code Online (Sandbox Code Playgroud)

现在将样式应用于对话框。

final Dialog dialog = new Dialog(this , R.style.dialog);
Run Code Online (Sandbox Code Playgroud)

请注意,属性“parent”是“Theme.Black.NoTitleBar.Fullscreen”,就像活动的样式一样。并且属性“android:windowFullScreen”应该是假的。

现在,当软键盘切换时,对话框将调整大小。