我有一个 EditText,我通过以下代码手动控制显示键盘:
private void showKeyboard(boolean show) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (show) {
mAddNewEditText.requestFocus();
imm.showSoftInput(mAddNewEditText, 0);
} else {
mAddNewEditText.clearFocus();
imm.hideSoftInputFromWindow(mAddNewEditText.getWindowToken(), 0);
}
}
我将调用隐式 Intent 来获取新图像,当它返回 Activity 时,它不会显示软键盘。所以我尝试显示键盘 onResume 函数,如下所示:
@Override
protected void onResume() {
super.onResume();
if (mAddNewEditText.isFocused()) {
mAddNewEditText.post(
() -> showKeyboard(true)
);
}
}
但它显示的键盘是这样的,这与通常显示的键盘不同:
我想知道这里出了什么问题。是因为我使用的是post方法吗?没有帖子我无法显示键盘!
我尝试过什么:
- 我尝试使用不带帖子的方式,但不显示键盘。
- 我尝试调用 imm.showSoftInput(txtPassword, 0);结果是一样的。
- 我尝试了 mAddNewEditText.postDelayed 方法,100 个结果相同。
- 我尝试将 android:windowSoftInputMode="stateVisible"放在 Menifest 上,结果相同。
注意:我使用的是 Android 模拟器。
最佳答案
将此行放入 Activity 内的 list 中
<aplication>
<activity
android:windowSoftInputMode="stateHidden|adjustResize"/>
</aplication>
关于调用 onResume 后 Android 软键盘显示异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45456727/