Android 调用onResume后软键盘显示异常
Android soft keyboard displays weirdly after calling onResume
我有一个 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);
}
}
我将调用隐式意图来获取新图像,当它返回到 activity 时,它不会显示软键盘。所以我尝试如下所示显示键盘 onResume 函数:
@Override
protected void onResume() {
super.onResume();
if (mAddNewEditText.isFocused()) {
mAddNewEditText.post(
() -> showKeyboard(true)
);
}
}
但它显示的键盘与通常显示的键盘不同:
我想知道这里有什么问题。是因为我使用了 post 方法吗?没有 post 我无法显示键盘!
我尝试了什么:
- 我尝试在不显示键盘的情况下使用 post。
- 我试着调用 imm.showSoftInput(txtPassword, 0);结果相同。
- 我试过 mAddNewEditText.postDelayed 方法 100 结果相同。
- 我尝试将 android:windowSoftInputMode="stateVisible" 放在 Menifest 上,结果相同。
注意:我正在使用 Android 模拟器。
将此行放在您的清单中 activity
<aplication>
<activity
android:windowSoftInputMode="stateHidden|adjustResize"/>
</aplication>
也许你可以试试postDelayed(),延迟500毫秒或更多。确保在 UI 完成后显示键盘。
好的,我找到了答案:
在我的 styles.xml 我有这个代码:
<item name="android:windowFullscreen">true</item>
是哪个问题导致的,不知道为什么。
我有一个 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);
}
}
我将调用隐式意图来获取新图像,当它返回到 activity 时,它不会显示软键盘。所以我尝试如下所示显示键盘 onResume 函数:
@Override
protected void onResume() {
super.onResume();
if (mAddNewEditText.isFocused()) {
mAddNewEditText.post(
() -> showKeyboard(true)
);
}
}
但它显示的键盘与通常显示的键盘不同:
我想知道这里有什么问题。是因为我使用了 post 方法吗?没有 post 我无法显示键盘!
我尝试了什么:
- 我尝试在不显示键盘的情况下使用 post。
- 我试着调用 imm.showSoftInput(txtPassword, 0);结果相同。
- 我试过 mAddNewEditText.postDelayed 方法 100 结果相同。
- 我尝试将 android:windowSoftInputMode="stateVisible" 放在 Menifest 上,结果相同。
注意:我正在使用 Android 模拟器。
将此行放在您的清单中 activity
<aplication>
<activity
android:windowSoftInputMode="stateHidden|adjustResize"/>
</aplication>
也许你可以试试postDelayed(),延迟500毫秒或更多。确保在 UI 完成后显示键盘。
好的,我找到了答案: 在我的 styles.xml 我有这个代码:
<item name="android:windowFullscreen">true</item>
是哪个问题导致的,不知道为什么。