diff --git a/Notesmaster/app/src/main/java/net/micode/notes/ui/NoteEditText.java b/Notesmaster/app/src/main/java/net/micode/notes/ui/NoteEditText.java index 69cd565..eb38037 100644 --- a/Notesmaster/app/src/main/java/net/micode/notes/ui/NoteEditText.java +++ b/Notesmaster/app/src/main/java/net/micode/notes/ui/NoteEditText.java @@ -168,35 +168,53 @@ public class NoteEditText extends EditText { return super.onKeyDown(keyCode, event); } + /** + * 处理键盘按键抬起事件 + * @param keyCode 按键代码,如KeyEvent.KEYCODE_DEL + * @param event 按键事件对象 + * @return 返回true表示事件已处理,false表示未处理 + */ @Override public boolean onKeyUp(int keyCode, KeyEvent event) { switch(keyCode) { - case KeyEvent.KEYCODE_DEL: + case KeyEvent.KEYCODE_DEL: // 删除键抬起事件 + // 当设置了文本变化监听器时 if (mOnTextViewChangeListener != null) { + // 如果光标在文本开头且不是第一个编辑框 if (0 == mSelectionStartBeforeDelete && mIndex != 0) { + // 回调删除事件,传递当前索引和文本内容 mOnTextViewChangeListener.onEditTextDelete(mIndex, getText().toString()); - return true; + return true; // 事件已处理 } } else { - Log.d(TAG, "OnTextViewChangeListener was not seted"); + Log.d(TAG, "OnTextViewChangeListener was not set"); } break; - case KeyEvent.KEYCODE_ENTER: + + case KeyEvent.KEYCODE_ENTER: // 回车键抬起事件 + // 当设置了文本变化监听器时 if (mOnTextViewChangeListener != null) { + // 获取当前光标位置 int selectionStart = getSelectionStart(); + // 截取光标后的文本 String text = getText().subSequence(selectionStart, length()).toString(); + // 保留光标前的文本 setText(getText().subSequence(0, selectionStart)); + // 回调回车事件,传递下一个索引和截取的文本 mOnTextViewChangeListener.onEditTextEnter(mIndex + 1, text); } else { - Log.d(TAG, "OnTextViewChangeListener was not seted"); + Log.d(TAG, "OnTextViewChangeListener was not set"); } break; + default: + // 其他按键不做特殊处理 break; } + // 未被处理的按键事件交由父类处理 return super.onKeyUp(keyCode, event); } - + @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { if (mOnTextViewChangeListener != null) {