Prevent soft keyboard from being dismissed
有关如何以编程方式显示/隐藏软键盘的许多问题。
但是,众所周知,android后退按钮会导致键盘被解雇。
有没有办法防止用户通过后退按钮解除键盘?
我试图捕获后退按钮,但是当按下后退键并且软键盘可见时,在我的活动中键盘显示在键盘上时不会调用。
任何建议将不胜感激。
我找到了解决方案:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public class KeyBoardHolder extends EditText { public KeyBoardHolder(Context context) { super(context); } public KeyBoardHolder(Context context, AttributeSet attrs) { super(context, attrs); } public KeyBoardHolder(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public KeyBoardHolder(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Override public boolean onKeyPreIme(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { return true; } return false; } } |
这可以防止键盘被后退按钮关闭。
我是通过使用以下两种方法完成的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput (InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY); } return super.onKeyUp(keyCode, event); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); } return super.onKeyDown(keyCode, event); } |