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

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

相关推荐
阿pin10 小时前
Android随笔-Zygote中fork究竟是什么?
android·zygote·fork
Go-higher10 小时前
DriverTest 驾考知识卡片学习助手 —— 一款基于 Jetpack Compose 的现代 Android 学习APP
android·学习
安卓修改大师10 小时前
安卓修改大师APK控件修改实战教程
android
阿pin11 小时前
Android随笔-Zygote是什么?
android·zygote
小虎牙00711 小时前
Android kotlin图片库Coil源码详解
android·前端
AFinalStone11 小时前
Android 7系统网络(一)全景图与调用链路概览
android·网络·frameworks
用户860225046747212 小时前
Android DEX 内存 Dump 全流程实战:从 APK 提取到无特征内存盲扫
android
Android-Flutter14 小时前
android compose Brush 渐变和着色器 使用
android·kotlin·compose
杉氧15 小时前
兼容与共生:如何在旧项目中优雅地引入 Compose?
android·架构·android jetpack
Flynt16 小时前
Room 3.0 包名重构 + KMP 迁移:我把项目升级踩了个遍
android·数据库·kotlin