防止软键盘被解雇

关于如何以编程方式显示/隐藏软键盘有很多问题。

但是,正如我们都知道的android后退button将导致键盘被解雇。 有没有办法阻止用户按下后退button解除键盘?

我试图捕获后退button,但是当键盘显示onKeyDown在我的活动时,不会调用当后退键和软键盘可见。

任何build议将不胜感激。

Solutions Collecting From Web of "防止软键盘被解雇"

我find了解决办法:

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; } } 

这可以防止后退buttonclosures键盘。

我使用了以下两种方法:

 @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); }