From c7600b014a992fac25e032dc895bc5d3845ac99c Mon Sep 17 00:00:00 2001 From: kangshulong <1095887643@qq.com> Date: Wed, 18 Mar 2026 11:13:36 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=A7=A3=E5=86=B3=E5=90=8C=E5=88=97=E9=95=BF?= =?UTF-8?q?=E6=8C=89=E6=88=96=E5=BF=AB=E6=8C=89=E6=96=B9=E5=90=91=E4=B8=8A?= =?UTF-8?q?=E4=B8=8B=E9=94=AE=E7=84=A6=E7=82=B9=E5=B9=B6=E6=9C=AA=E8=90=BD?= =?UTF-8?q?=E5=9C=A8=E5=90=8C=E4=BE=8B=E8=80=8C=E6=98=AF=E5=8F=AF=E8=A7=86?= =?UTF-8?q?=E6=9C=80=E5=90=8E=E4=B8=80=E4=B8=AAitem=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/CustomRecyclerViewer.java | 61 +++++++++++-------- 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/com/ik/mboxlauncher/view/CustomRecyclerViewer.java b/app/src/main/java/com/ik/mboxlauncher/view/CustomRecyclerViewer.java index 4a79719..8a35fcc 100644 --- a/app/src/main/java/com/ik/mboxlauncher/view/CustomRecyclerViewer.java +++ b/app/src/main/java/com/ik/mboxlauncher/view/CustomRecyclerViewer.java @@ -6,6 +6,7 @@ import android.content.res.TypedArray; import android.graphics.Rect; import android.util.AttributeSet; import android.util.Log; +import android.view.FocusFinder; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; @@ -227,7 +228,7 @@ public class CustomRecyclerViewer extends RecyclerView { public boolean dispatchKeyEvent(KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { -// int keyCode = event.getKeyCode(); + int keyCode = event.getKeyCode(); // if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN || keyCode == KeyEvent.KEYCODE_DPAD_UP) { // long current = System.currentTimeMillis(); // boolean res; @@ -240,34 +241,42 @@ public class CustomRecyclerViewer extends RecyclerView { // return res; // } // + if(keyCode == KeyEvent.KEYCODE_DPAD_DOWN || keyCode == KeyEvent.KEYCODE_DPAD_UP) { -// View focusedView = getFocusedChild(); // 获取当前获得焦点的view -// View nextFocusView; -// try { -// if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) { -// // 通过findNextFocus获取下一个需要得到焦点的view -// nextFocusView = FocusFinder.getInstance().findNextFocus(this, focusedView, View.FOCUS_DOWN); -// } else { -// // 通过findNextFocus获取下一个需要得到焦点的view -// nextFocusView = FocusFinder.getInstance().findNextFocus(this, focusedView, View.FOCUS_UP); -// } -// -// -// LogUtils.loge("nextFocusView===>"+nextFocusView); -// -// } catch (Exception e) { -// nextFocusView = null; -// } -// -// // 如果获取失败(也就是说需要交给系统来处理焦点, 消耗掉事件,不让系统处理, 并让先前获取焦点的view获取焦点) -// if (nextFocusView == null) { -// focusedView.requestFocus(); -// return true; -// -// } + + View focusedView = getFocusedChild(); // 获取当前获得焦点的view + View nextFocusView; + try { + if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) { + // 通过findNextFocus获取下一个需要得到焦点的view + nextFocusView = FocusFinder.getInstance().findNextFocus(this, focusedView, View.FOCUS_DOWN); + } else { + // 通过findNextFocus获取下一个需要得到焦点的view + nextFocusView = FocusFinder.getInstance().findNextFocus(this, focusedView, View.FOCUS_UP); + } + + + LogUtils.loge("nextFocusView===>" + nextFocusView); + + } catch (Exception e) { + nextFocusView = null; + } + + // 如果获取失败(也就是说需要交给系统来处理焦点, 消耗掉事件,不让系统处理, 并让先前获取焦点的view获取焦点) + if (nextFocusView == null) { + if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) { + focusedView.requestFocus(View.FOCUS_DOWN); + } + if (keyCode == KeyEvent.KEYCODE_DPAD_UP) { + focusedView.requestFocus(View.FOCUS_UP); + } + return true; + + } // } -// } } +// } + } return super.dispatchKeyEvent(event); }