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

时间:2016-02-16 07:04:25

标签: android keyboard android-service alertdialog android-alertdialog

我有一个在服务中运行的浮动应用。要在服务中创建对话框,您必须将其类型设置为TYPE_SYSTEM_ALERT,这将起作用并显示对话框。我唯一的问题是,当我在这个警告对话框中有一个editText时,键盘会显示,但对话框不会移动。因此键盘将阻止对话框的某些部分。

我在stackOverflow上搜索了答案,但找不到任何有用的答案。我尝试在对话框中添加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();
    }
}

2 个答案:

答案 0 :(得分:0)

TYPE_SYSTEM_ALERT不会从API 19开始重新定位。
尝试使用TYPE_PHONE代替TYPE_SYSTEM_ALERT

答案 1 :(得分:0)

为我工作,我把

getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
在显示对话框之前的块中或在onCreateDialog回调

中的