Prevent softkeyboard dismiss on the android back button press
本问题已经有最佳答案,请猛点这里访问。
我有一个编辑文本的活动。当活动开始的时候,我总是把注意力集中在编辑文本上。我通过给予
1 | android:windowSoftInputMode="stateAlwaysVisible" |
在舱单上。我正在按软键盘上的"完成"按钮。实际上,我需要的是,当用户进行此活动时,软键盘应该始终存在。现在我通过覆盖和不做任何事情禁用了后退按钮。
1 2 3 4 | @Override public void onBackPressed() { // Do nothing } |
但软键盘在后压时会被忽略。如何解决这个问题。我试过这样做,以防软键盘被解雇,但还是在后面按键盘被解雇。但它回来的时候再按一下后退按钮,我需要的是后压不应解除软键。如有任何帮助,我们将不胜感激。
创建一个自定义的EditText,如下所示,带有一个接口:
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | public class CustomEditText extends EditText { public void setHandleDismissingKeyboard( handleDismissingKeyboard handleDismissingKeyboard) { this.handleDismissingKeyboard = handleDismissingKeyboard; } private handleDismissingKeyboard handleDismissingKeyboard; public interface handleDismissingKeyboard { public void dismissKeyboard(); } @SuppressLint("NewApi") public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); // TODO Auto-generated constructor stub } public CustomEditText(Context context) { super(context); // TODO Auto-generated constructor stub } public CustomEditText(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); // TODO Auto-generated constructor stub } @Override public boolean onKeyPreIme(int keyCode, KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { handleDismissingKeyboard.dismissKeyboard(); return true; } return super.dispatchKeyEvent(event); } |
然后在"活动"中,创建"初始化客户"文本并使用:
1 | customEditText.setHandleDismissingKeyboard(this); |
然后实现类和重写方法并将代码放入其中
有关我的答案的更多信息,您所需要的就是
对于使用EDCOX1(2)而言,可以使用XML或Java,定义并初始化它,像其他小部件(按钮、文本视图、……)一样。,唯一不同的是,您需要在XML中定义它,如下所示:
1 | <yourPackage.CustomEditText ..... /> |