From a506d87ca7e4ab08d75cc0158206cd76a1ab892d Mon Sep 17 00:00:00 2001 From: FongMi Date: Sat, 2 Mar 2024 22:16:36 +0800 Subject: [PATCH 1/2] Fix search focus --- .../android/tv/ui/custom/CustomEditText.java | 18 ++++++++++++++++++ .../leanback/res/layout/activity_search.xml | 2 ++ 2 files changed, 20 insertions(+) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomEditText.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomEditText.java index a3d63f990..b9059c222 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomEditText.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomEditText.java @@ -3,6 +3,8 @@ package com.fongmi.android.tv.ui.custom; import android.content.Context; import android.graphics.Rect; import android.util.AttributeSet; +import android.view.KeyEvent; +import android.view.View; import android.view.animation.Animation; import androidx.annotation.NonNull; @@ -10,6 +12,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatEditText; import com.fongmi.android.tv.R; +import com.fongmi.android.tv.utils.KeyUtil; import com.fongmi.android.tv.utils.ResUtil; public class CustomEditText extends AppCompatEditText { @@ -25,11 +28,26 @@ public class CustomEditText extends AppCompatEditText { flicker = ResUtil.getAnim(R.anim.flicker); } + private View focusSearch(KeyEvent event) { + if (KeyUtil.isUpKey(event)) return getParent().focusSearch(this, FOCUS_UP); + if (KeyUtil.isDownKey(event)) return getParent().focusSearch(this, FOCUS_DOWN); + if (KeyUtil.isLeftKey(event) && getSelectionStart() == 0) return getParent().focusSearch(this, FOCUS_LEFT); + if (KeyUtil.isRightKey(event) && getSelectionStart() == getText().length()) return getParent().focusSearch(this, FOCUS_RIGHT); + return null; + } + @Override public boolean isFocused() { return true; } + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + View view = focusSearch(event); + if (view != null) view.requestFocus(); + return super.onKeyDown(keyCode, event); + } + @Override protected void onFocusChanged(boolean gainFocus, int direction, @Nullable Rect previouslyFocusedRect) { super.onFocusChanged(gainFocus, direction, previouslyFocusedRect); diff --git a/app/src/leanback/res/layout/activity_search.xml b/app/src/leanback/res/layout/activity_search.xml index 7f222250f..3c338fee8 100644 --- a/app/src/leanback/res/layout/activity_search.xml +++ b/app/src/leanback/res/layout/activity_search.xml @@ -65,6 +65,8 @@ android:layout_marginBottom="16dp" android:layout_toEndOf="@+id/mic" android:background="@null" + android:focusable="true" + android:focusableInTouchMode="true" android:hint="@string/search_keyword" android:imeOptions="actionDone" android:inputType="textCapWords|textAutoCorrect|textAutoComplete" From 8b4c99c1c42cdd4f9e87c6d9165f6a0f9b8a0ae4 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sat, 2 Mar 2024 23:45:14 +0800 Subject: [PATCH 2/2] Fix search focus --- .../java/com/fongmi/android/tv/ui/custom/CustomEditText.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomEditText.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomEditText.java index b9059c222..aed954f1e 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomEditText.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomEditText.java @@ -43,8 +43,8 @@ public class CustomEditText extends AppCompatEditText { @Override public boolean onKeyDown(int keyCode, KeyEvent event) { - View view = focusSearch(event); - if (view != null) view.requestFocus(); + View v = focusSearch(event); + if (v != null) return v.requestFocus(); return super.onKeyDown(keyCode, event); }