可以通过自定义输入法按键行为来解决此问题。以下是实现这种行为的代码示例:
public class CustomEditText extends EditText { public CustomEditText(Context context) { super(context); }
public CustomEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
// 隐藏软键盘
InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getWindowToken(), 0);
return true;
}
return super.onKeyPreIme(keyCode, event);
}
}
这样,当用户长按此字段时,按返回键将隐藏软键盘。