显示键盘时,服务内部的 AlertDialog 不会向上移动

AlertDialog inside service not moving up when showing keyboard

我有一个浮动应用程序 运行 在服务中。要在服务中创建对话框,您必须将其类型设置为 TYPE_SYSTEM_ALERT 这有效并且对话框显示。我唯一的问题是,当我在这个警告对话框中有一个 editText 时,键盘会出现但对话框不会移动。所以键盘会挡住对话框的某些部分。

我已经在 Whosebug 上搜索了答案,但找不到任何有效的答案。我尝试在对话框中添加 SOFT_INPUT_ADJUST_PAN 但没有结果。

关于如何移动对话框的任何想法?我知道 Facebook Messenger 应用程序浮动气泡可以做到这一点。

这是我的自定义 AlertDialog:

    public class ServiceDialogBuilder extends android.app.AlertDialog.Builder {

    public ServiceDialogBuilder(Context context) {
        super(context);
    }

    @Override
    public AlertDialog create() {
        AlertDialog dialog = super.create();

        dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
        dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
        dialog.setCancelable(true);

        return dialog;
    }

    @Override
    public AlertDialog show()   {
        return super.show();
    }
}

TYPE_SYSTEM_ALERT 不会从 API 19.
开始重新定位 尝试使用 TYPE_PHONE 而不是 TYPE_SYSTEM_ALERT

对我有用,我把

getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

在显示对话框之前的块中或在 onCreateDialog 回调中