我有一个在服务中运行的浮动应用。要在服务中创建对话框,您必须将其类型设置为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();
}
}
答案 0 :(得分:0)
TYPE_SYSTEM_ALERT
不会从API 19开始重新定位。
尝试使用TYPE_PHONE
代替TYPE_SYSTEM_ALERT
答案 1 :(得分:0)
为我工作,我把
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
在显示对话框之前的块中或在onCreateDialog回调中的