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"