显示键盘时,服务内部的 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 回调中
我有一个浮动应用程序 运行 在服务中。要在服务中创建对话框,您必须将其类型设置为 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 回调中