如何保持软键盘打开时后退按钮按下
问题描述:
我的方法是这样的:如何保持软键盘打开时后退按钮按下
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
EditText editText = (EditText) findViewById(R.id.editText1);
editText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
InputMethodManager.HIDE_IMPLICIT_ONLY);
return false;
}
return super.dispatchKeyEvent(event);
}
但是这不是为我工作,但后退键被按下如何保持软键盘仍处于打开状态?
答
您可以通过重写onKeyPreIme方法来处理返回键来专门化EditText小部件。
public class MyEditText extends EditText {
public MyEditText(Context context, AttributeSet attr) {
super(context, attr);
// TODO Auto-generated constructor stub
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
boolean retVal = false;
if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
InputMethodManager manager = (InputMethodManager) this.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
manager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
}
return retVal;
}
}
然后在您的活动中使用这个专门的EditText小部件。我正在使用的片段布局片段。
<com.example.MyEditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:inputType="text" />
它一样,没有为我工作,在第一次按键后,键盘仍然隐藏,当我再次按下它,键盘显示和应用程序退出。 –