自定义对话框片段在软键盘弹出窗口上调整大小

avi*_*vid 5 android android-fragments

我有一个在较小屏幕上全屏的对话碎片,但对于较大的屏幕具有一定的尺寸.

该对话框在页脚中有一个编辑文本字段和几个操作按钮.我需要调整对话框片段的大小,以便在键盘对焦时按钮位于软键盘上方.

在较小的屏幕上,以下代码段可确保对话框调整大小.

<style name="fullScreenDialog" parent="android:Theme">
  <item name="android:windowSoftInputMode">adjustResize</item>
</style>
Run Code Online (Sandbox Code Playgroud)

对于较大的屏幕,尺寸设置如下.

@Override
public void onStart() {
    super.onStart();
    if (EPHelper.deviceHasLargeScreen()) {
        Dialog d = getDialog();
        Window w = d.getWindow();

        if (dimenH > 0 && dimenW > 0) {
            w.setLayout(dimenW, dimenH);
        }
Run Code Online (Sandbox Code Playgroud)

我尝试在onViewCreated中使用SOFT_INPUT_ADJUST_RESIZE

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    Window w = getDialog().getWindow();
    w.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用.我注释掉代码来设置布局尺寸,并且中提琴可以工作.因此,设置布局参数似乎阻碍了调整大小.

  • 我可以使布局高度更小,以便键盘适合,但它似乎hacky.
  • 另一个选项是在显示软键盘时调整对话框片段的大小.

有没有更好/推荐的方法让这两者一起工作 - >显示软键盘时,对话框片段和屏幕的自定义屏幕大小调整大小.