在调用 AlertDialog.onCreate 后添加 EditText 时会出现此问题。
https://developer.android.com/reference/androidx/appcompat/app/AlertDialog.Builder
AlertDialog 类会根据对话框中的任何视图是否从 View.onCheckIsTextEditor() 返回 true,自动为您设置 android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM。
您需要清除 FLAG_ALT_FOCUSABLE_IM 标志。
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
因为在DialogFragment.onStart 中调用了AlertDialog.show,所以可以在DialogFragment.onStart 中插入代码。
@Override
public void onStart() {
super.onStart();
getDialog().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
}
或者,如果您不使用 DialogFragment,则可以使用 Dialog.setOnShowListener。
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
getDialog().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
}
});