在调用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);
由于AlertDialog.show在DialogFragment.onStart中被调用,因此您可以在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);
}
});