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

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

相关推荐
冬奇Lab8 小时前
MediaPlayer 播放器架构:NuPlayer 的 Source/Decoder/Renderer 三驾马车
android·音视频开发·源码阅读
炸炸鱼.9 小时前
Python 操作 MySQL 数据库
android·数据库·python·adb
用户416596736935511 小时前
nextlib 项目架构与深度技术指南 (Architecture & Technical Master Guide)
android
aq553560011 小时前
Laravel10.x重磅升级,新特性一览
android·java·开发语言
Trouvaille ~12 小时前
【MySQL篇】数据类型:存储数据的基础
android·数据库·mysql·adb·字符集·数据类型·基础入门
2401_8858850413 小时前
开发视频短信接口好开发吗?图文视频短信接口对接教程
android·音视频
千码君201614 小时前
kotlin:Jetpack Compose 给APP添加声音(点击音效/背景音乐)
android·开发语言·kotlin·音效·jetpack compose
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.14 小时前
MySQL半同步复制与GTID实战详解
android·mysql·adb
用户416596736935515 小时前
深度解码:记一次视频时间戳(PTS)异常导致的播放故障排查
android
大白菜和MySQL17 小时前
linux系统环境常用命令
android·linux·adb