是否有SoftInputMode解决方法来显示整个对话框

时间:2015-08-08 15:50:40

标签: android android-layout android-softkeyboard

我有一个DialogFragment有两个EditText字段,另一个字段有一个ImageView来增加它们下面的值,它们都位于ScrollView

问题是软键盘的调整模式既没有空格也显示我的整个DialogFragment

adjustResize会导致ScrollView调整大小并隐藏底行。 adjustpan保持ScrollView大小不变,但软键盘与底行重叠。

删除ScrollView表示任一选项都会导致键盘重叠。

我想要的是DialogFragment在不调整大小的情况下向上移动屏幕。我可以做到这一点吗?理想情况下,我希望将ScrollView保留在我的Layout中,以便更好地支持非常小的屏幕。

adjustPan adjustResize The result I'd like

1 个答案:

答案 0 :(得分:1)

我找到的唯一解决方案是更改对话框片段本身的窗口选项。显然在较小的屏幕上这仍然是一个问题所以我仍然在寻找更好的答案。

@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {

    //I was using android.R.style.Theme_Translucent_NoTitleBar for another issue
    //but I don't think the theme makes any difference to how the window is laid out 
    //that is relevant to the below code
    Dialog dialog = new Dialog(getActivity(), android.R.style.Theme_Translucent_NoTitleBar);
    ... //Do your usual stuff here
    dialog.getWindow().setContentView(...);

    final WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
    params.width = WindowManager.LayoutParams.MATCH_PARENT;
    params.height = WindowManager.LayoutParams.WRAP_CONTENT;
    params.gravity = Gravity.TOP; //this is the important part
    dialog.setCanceledOnTouchOutside(false);

    return dialog;

}