From fa0d2533ceb88311f59f94c91db63f42a9a7aab1 Mon Sep 17 00:00:00 2001 From: gq <15933486098@qq.com> Date: Thu, 15 May 2025 08:23:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B3=A8=E9=87=8A=E4=BA=86=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=94=AE=E7=9B=98=E6=8A=AC=E8=B5=B7=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../net/micode/notes/ui/NoteEditText.java | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) 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) {