Android 按上/下键,焦点会移动到第一个控件上面或最后一个控件下面的解决办法

Android开发过程中,在页面中按上或者下键,有时候会出现焦点移动到第一个控件上面或者最后一个控件下面,即焦点会移出当前View,这时就需要对第一个控件或最后一个控件做限制。

以第一个控件(该控件设置了android:focusable="true"属性)为例,可以在 Activity 等可以监听按键事件的类中,做拦截限制,例如:

java 复制代码
    
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
            // 获取当前焦点所在的View
            View focusView = getCurrentFocus();
            if (focusView != null || focusView.getId() == R.id.ll_bluetooth_name)) {
                // 选中页面第一项后不允许再向上移动
                return true;
            }
        }
        return super.onKeyDown(keyCode, event);
    }

而最后一个控件按下键的拦截限制同理。

相关推荐
帅次2 小时前
Modifier 链与顺序、测量与命中区域
android·kotlin·compose·modifier
leory2 小时前
请详细描述Handler消息机制的工作原理
android·面试
leory2 小时前
请描述Binder IPC的基本原理和工作流程
android·面试
leory2 小时前
View的事件分发机制是怎样的?dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent的关系?
android·面试
zander2583 小时前
Canal本地部署保姆级教程
android
小仙女喂得猪4 小时前
2026 Android 组件化项目的AICoding落地实践
android·kotlin·ai编程
leory4 小时前
请详细描述JVM的垃圾回收机制?
android·面试
leory4 小时前
volatile关键字的作用是什么?它能保证原子性吗?
android·面试
消失的旧时光-19434 小时前
为什么 Linux / Android 系统里全是 struct + 函数指针?—— 一篇讲透 C 语言如何实现面向对象(OOP)
android·linux·c语言
沐言人生4 小时前
ReactNative 源码分析5——ReactActivity之启动RN应用
android·react native