在有软键盘的情况下返回键的处理

HarmonyOS Next开发学习手册——键鼠事件 键鼠事件指键盘,鼠标外接设备的输入事件。 阅读详情

我们知道安卓在有软键盘的时候点击返回键,如果用onkeydown去拦截,那么这次的返回键是被软键盘的隐藏拦截掉的。那么如果要在软键盘弹出的情况下第一次返回键就能被我们自己拦截该怎么做呢?

通过观看源码可知,view身上有个方法是dispatchKeyEventPreIme,这个方法是按键处理转发到view视图的分发方法,接着会调到onpreime, 这个方法是任何按键跟view关联的最先调用的方法。

所以只要重写控件的这两方法的其中一个拦截event写个回调就可以达到我们的目的。虽然重写其中一个都可做到,但是个人觉得还是重写onpreime比较好点,因为dispatchKeyEventPreIme毕竟还是event分发的方法,而onpreime才是真正处理event的方法。

附上自己代码:

<pre name="code" class="java"><pre name="code" class="java">public class IgnoreImeEdittext  extends EditText {

    private OnMyKeyPreIme onMyKeyPreIme;

    public IgnoreImeEdittext(Context context) {
        super(context);
    }

    public IgnoreImeEdittext(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public IgnoreImeEdittext(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public boolean onKeyPreIme(int keyCode, KeyEvent event) {
        if(onMyKeyPreIme!=null){
            onMyKeyPreIme.disPatch(keyCode,event);
        }
        return super.onKeyPreIme(keyCode, event);
    }

    public void setOnMyKeyPreimeListener(OnMyKeyPreIme onMyKeyPreIme){
         this.onMyKeyPreIme = onMyKeyPreIme;
    }

    public interface OnMyKeyPreIme{
        public void disPatch(int keyCode, KeyEvent event);
    }
}




OpenHarmony实战开发-使用通用事件、键鼠事件 键鼠事件指键盘,鼠标外接设备的输入事件。 阅读详情

相关推荐

Android物理键与软键盘事件捕获实战工程(含返回/音量/菜单键响应示例)

一个开箱即用的Android按键事件处理示例项目,专注捕获和响应各类硬件按键(如返回键、音量加减键、菜单键)以及软键盘输入。核心逻辑集中在Activity中,通过重写onKeyDown、onKeyUp、onKeyLongPress等系统回调方法实现差异化行为控制,比如拦截返回键跳转、长按音量键触发快捷功能、监听方向键操作等。项目结构完整:src目录存放可直接调试的Java代码;key目录预留自定义键值映射或快捷键配置扩展空间;res资源目录支持图标、布局等引用;AndroidManifest.xml已声明启

r2s3t4的博客 228

Android 软键盘弹出情况下监听返回键直接退出界面

最近做一个评论功能,要求点击返回键直接finish掉评论界面(软键盘+界面),在onBackPressed()和onKeyDown()中进行监听返回键都是先关闭软键盘,然后才能finish掉界面。最后在dispatchKeyEvent()打印log发现,在软键盘弹出的情况下点击返回键,触发的是KeyEvent.ACTION_UP事件,而未触发KeyEvent.ACTION_DOWN事件,因此拦截K...

little762的博客 3965

安卓监听键盘弹起和键盘关闭代码编写

安卓监听键盘弹起和键盘关闭代码编写,适用于布局中嵌套有scrollView,没有scrollView无法监听到底部距离发生的变化,其它布局中不可使用

Android 如何监听输入法软键盘关闭事件

假设有如下界面(输入法的上面的输入区域是用Dialog实现的)要求当输入法关闭的时候,Dialog也一起关闭,这样用户就不需要返回两次了。网上找了很多资料都没有很好的解决这个问题,输入法是第三方程序,确实不好检测它的关闭与显示。后来在EditText源码中看到 public boolean onKeyPreIme(int keyCode, KeyEvent event){} 对该方法官方文档:

Chiclaim 2万+

ISO26262 功能安全各个阶段测试要求

1. 开发过程说明 系统层面:包括软硬件集成测试、系统集成测试以及整车测试。 硬件层面:包括硬件集成与测试。 软件层面:单元测试、集成测试。 2. 功能安全总体要求 2.1 各项指标 2.2 诊断覆盖度举例 针对一个信号举例说明: 3. 功能安全测试要求 3.1 测试计划 核心内容应包括, 测试对象:需要测试的对象描述,以及测试的范围描...

AgingMoon的博客 1万+

从模拟到实战:移远EC800M单片机MQTT接入OneNet全流程解析

本文详细解析了移远EC800M单片机通过MQTT协议接入OneNet平台的全流程,涵盖环境准备、模拟设备搭建、硬件迁移、数据交互调试及性能优化等关键步骤。针对常见问题如AT指令缓冲区溢出、心跳间隔设置等提供实战解决方案,帮助开发者高效实现物联网设备稳定接入。

weixin_29215815的博客 434

KeyEvent事件的传递

KeyEvent事件的传递 最近解bug的时候遇到这么一个case,就是用户点击导航栏的返回键时,onBackPress并没有执行,再进一步调试发现onKeyDown也没有执行到。所以下面我会尽可能从代码层面分析KeyEvent事件的传递,而一些涉及WMS,IME的就不去深入分析了。 KeyEvent主要包括手机导航键Back、Home、Task,也有可能是连接了外置键盘的键盘键。 onBac...

mingC0758的博客 2894

强化学习赋能宇树机器狗:Isaac Gym与MuJoCo仿真训练全解析

本文详细解析了如何利用Isaac Gym和MuJoCo两大仿真平台为宇树机器狗构建强化学习训练管道。内容涵盖环境配置、模型导入、PPO算法框架设计、奖励函数构建以及从仿真到实机的策略迁移技巧,为开发者提供了一套完整的宇树狗仿真训练实践方案。

zeta9的博客 621

<Android>监听软键盘打开收起事件(软键盘自带收起按钮)

最近在公司开发cocos2dx上的android输入框控件,遇到软键盘的事件监听,通常软键盘的收起方式大致3种: 1.点击软键盘右下角的Return按钮(系统收起) 2.输入框焦点时按返回按钮(系统收起) 3.点击软键盘和输入框的外部(自发收起) 4.点击软键盘自带的收起按钮(软键盘收起) 前三种事件可以监听,方式都比较简单 1.点击软键盘右下角的Return按钮 给输入框设

朵朵码爸爸的专栏 1万+

别光看原理图了!手把手教你用Altium Designer搞定STM32F411最小系统的PCB布局(附电源/晶振/复位电路实战)

本文详细介绍了使用Altium Designer进行STM32F411最小系统PCB布局的实战技巧,涵盖电源分配网络优化、高速信号布线及系统级布局策略。通过规范的工程结构建立、关键设计规则预设和核心电路模块布局,帮助工程师提升PCB设计效率与信号完整性。特别针对STM32最小系统的电源、晶振和复位电路提供了专业解决方案。

weixin_42653691的博客 171

基于单片机直流电机调速控制系统设计

*单片机设计介绍,基于单片机直流电机调速控制系统设计。

2201_75940997的博客 2782

android中焦点返回,Android 设置系统的返回键 和软键盘获取焦点问题

很多朋友出现过这样的一个问题,当底部弹出评论框时,有几个问题,一个是软件盘弹出时怎么让焦点在输入框,关于这个问题,本人也是遇到过,解决了很久,有的是在布局设置或者代码里setFocusable(true),并没有用,又在代码或者代码里设置requestFocus(),依然没有用,其实这个解决办法是没有错的,但是为什么会没用呢,因为并没有及时是在软件盘弹出时设置,所以先提出隐藏和显示软件盘的方法pr...

weixin_35656580的博客 533

Halcon那些事:Halcon缺陷检测检测印刷数字完整性

创建模板 create_shape_model模板匹配 find_shape_model。

十多年IT经验,专注机器视觉,智能制造半导体行业 768

Android软键盘弹出,返回键Activity不结束

Activity中若弹出软键盘,按返回键将先相应返回键。 若想按下返回键结束Activity: @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { finish();

无心下棋 2544

某招标公告网和vcaptcha验证码识别逆向

本文分析了某验证码系统的加密流程及破解思路。首先通过反混淆技术定位到加密函数,拆解了包含指纹函数、环境参数等组成的加密字符串。研究发现验证码生成涉及canvas指纹、环境检测等反爬机制,可通过模拟浏览器环境绕过。验证过程需要解密图片顺序,通过work2.js计算还原图片位置,再结合滑动轨迹、时间等参数生成验证请求。文章仅提供技术研究思路,强调需遵守法律法规,严禁非法破解信息系统。完整流程包括环境模拟、加密参数还原、图片处理和轨迹生成等步骤,成功率较高。

码王吴彦祖的博客 583

海康威视嵌入式最全面试题及参考答案(3万字长文)

主营业务:提供包括前端摄像头、后端存储设备、显示控制设备等在内的全方位视频监控解决方案。市场地位:在全球范围内享有较高的市场份额,在安防领域具有较强的竞争力。技术创新:持续投入研发,拥有多项核心技术和专利,特别是在视频处理算法、人工智能等方面取得了显著成果。社会责任:积极参与公共安全项目,为智慧城市、交通管理等领域提供技术支持和服务。国际业务:除了国内市场外,海康威视的产品和服务也销往全球多个国家和地区。面向对象编程。

大模型大数据攻城狮的专栏 1765

Android如何监听:软键盘显示时:返回键事件

软键盘弹出来隐藏起来,再普通不过的现象。但是有时候,当软键盘显示时,点击返回键,键盘消失,但是现在,假如你想在点击返回键的时候,既能隐藏软键盘,又能做其他的事情。

Lajos的博客 7161

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

安卓监听手机软键盘启动关闭事件(fragment返回键处理)

importandroid.app.Activity; importandroid.graphics.Rect; importandroid.view.View; importandroid.view.ViewTreeObserver; importandroid.widget.Toast;/** * Created by liujinhua on 15/10/25. */ public cla...

xiaoerbuyu1233的博客 786

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

关于软键盘弹起时监听返回键的问题

首先自定义控件重写dispatchKeyEventPreIme方法 判断软键处于活动状态,并且用户按下了返回键盘 @Override public boolean dispatchKeyEventPreIme(KeyEvent event) { if (context!= null) {             InputMethodManager imm = (Inpu

凌雨星辰 5439

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Android代码控制关闭软键盘的骚操作

1、一般在Android代码控制软键盘关闭都是像下面这样实现: public static void hideKeyBoard(Activity activity) { InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); //Find the currently focused view, so we can gr

逍遥阁 2048

点击返回键,同时隐藏输入区域和软键盘

dispatchkeyeventpreime()方法,如果软件的窗口存在最好用这个!

杨备的博客 3123

android Edittext 响应 返回键处理事件

当界面有edittext获取焦点并且弹出软键盘时,需要实现点击back返回键直接结束当前页面时,可以重写Edittext的onKeyPreIme方法 当我们点击顶部的输入框,然后弹出底部的输入键盘这种情况很常见,当我们点击back键的时候,首先是输入框消失,接下来有两种情况,如果我想在输入框消失的时候顶部的搜索框消失或者是不消失,那我们该怎么做呢?我这里介绍的方法是自定义EditText,然后...

It is never too late to learn. 1232

popwindow 焦点问题,物理返回键截获,软键盘监听问题

首先是setFocusable这个方法,获取焦点;如果不获取焦点,那么popwindow中的控件都没有办法获取焦点和事件响应问题。 如果获取焦点,那么popwindow就会拦截屏幕上的点击触摸事件以及物理键等。那么只有当popwindow消失,那么popwindow下面的页面才会响应事件。 当然也可以做到popwindow获取事件响应也可以让popwindow以外的区域也可以获取,那就是设置s

lxlmycsdnfree的博客 1928

android 软键盘取消

需求: 获取返回键的时候弹出是否确定返回 捕获到返回键的时候需要点击两次才能弹出这个Delog,恶心到我了 点击的时候发现总是先取消软键盘再弹出。。。 设计思路: 进入页面之后禁止自动弹出软键盘 1.在父控件中禁止 android:focusable="true" 或者 android:focusableInTouchMode="true" 我在使用的时候 androi...

鞠晓健 498

Android 设置系统的返回键 和软键盘获取焦点问题

很多朋友出现过这样的一个问题,当底部弹出评论框时,有几个问题,一个是软件盘弹出时怎么让焦点在输入框,关于这个问题,本人也是遇到过,解决了很久,有的是在布局设置或者代码里setFocusable(true),并没有用,又在代码或者代码里设置requestFocus(),依然没有用,其实这个解决办法是没有错的,但是为什么会没用呢,因为并没有及时是在软件盘弹出时设置,所以先提出隐藏和显示软件盘的方法pr

IT的鱼 5047
上一篇: 滚动view的嵌套。
下一篇: Android Studio鼠标移到类或者方法上面显示方法注释doc
androideveloper
博客等级 码龄12年 21粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值