我有一个自定义视图,可以显示在同一空间中的视图应该是Android的软键盘原生.
我需要打开键盘,单击按钮,隐藏键盘并在键盘所在的同一位置显示其他视图.
我现在只使用隐藏键盘并显示自定义视图,但有一个奇怪的行为和最小滞后和重叠.
有人实施了类似的东西吗?
我检查了 Github 项目并发现了该错误,并使用以下代码修复了该错误:
if (isRedPanelVisible()) {
showRedPanel(false);
showKeyboard(true, new KeyboardCallback() {
@Override
public void onKeyboardDone(boolean isVisible) {
}
});
}
if (KeyboardVisibilityEvent.isKeyboardVisible(TestActivity.this)) {
hideKeyboard(TestActivity.this);
new android.os.Handler().postDelayed(new Runnable() {
@Override
public void run() {
showRedPanel(true);
}
}, 100);
Run Code Online (Sandbox Code Playgroud)
注意:您只需将其放在 TestActivity.java 中按钮的单击事件下并删除以前的代码即可。
我做了什么
如果你的readPanel 可见,那么我调用showRedPanel并false尝试打开键盘。
之后,我添加了对键盘可见性事件的检查,如果键盘可见,我调用hideKeyboard使键盘消失并在延迟100 毫秒showReadPanel后调用true
代码:隐藏键盘
public void hideKeyboard(Activity activity) {
// Check if no view has focus:
try {
View view = activity.getCurrentFocus();
if (view != null) {
InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
} catch (Exception e) {
}
}
Run Code Online (Sandbox Code Playgroud)