我有这样的方法:
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);
}
但这对我不起作用,如果按下后退键,如何保持软键盘仍然打开?
答案 0 :(得分:0)
您可以通过重写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;
}
}
然后在Activity中使用这个专门的EditText小部件。我正在使用的片段布局代码段。
<com.example.MyEditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:inputType="text" />