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);
    }

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

相关推荐
木头左39 分钟前
【架构设计】教育类 App 服务端化改造:AI 上移、题库分层与个人题库归属
android·架构设计·系统设计·后端开发·数据库设计
墨狂之逸才1 小时前
USB 的 HOST 和 DEVICE 到底有什么区别?ADB 调试应该选哪个?
android
奶油话梅糖2 小时前
苹果的内核跑上了安卓手机:2,631 Star 的 HakiOS 让 XNU 在 Adreno GPU 上画出 118 帧
android·macos·智能手机
恋猫de小郭2 小时前
Flutter THLC 的 WebView 滚动终于从 70 FPS 提升到 120 FPS
android·前端·flutter
好的佩奇13 小时前
Dart 之扩展类型
android·flutter·dart
alexhilton15 小时前
2027 Android 开发者路线图:学习、面试与 AI
android·kotlin·android jetpack
灿飞屋17 小时前
Kotlin与Java虚拟机三:控制流
android·java·开发语言·后端·python·kotlin·安卓
疯华整猫18 小时前
我用 Trae 把 Android 内存账重算了一遍
android·性能优化·源码
TimeFine20 小时前
AI 编程工作流的设计:从人工判断到 AI裁判
android·ai编程
阿杰m20 小时前
Android源码第四章:Android 系统启动——App 的第一行代码从哪来?
android