Android – 处理虚拟和物理键盘事件

Android – 处理虚拟和物理键盘事件,第1张

概述在阅读了几个类似问题的答案之后*我确实意识到onKeyListener()没有从软(虚拟)键盘获得按键事件.它只能从硬(物理)键盘获取它们.解决方法是使用TextWatcher或onKeyboardActionListener.我有以下问题: (1)有没有办法能够通过实现一个监听器从任何键盘(软或硬)听按键?或基本上是一个适用于两者的API? (2)TextWatcher或onKeyboardAc 在阅读了几个类似问题的答案之后*我确实意识到onKeyListener()没有从软(虚拟)键盘获得按键事件.它只能从硬(物理)键盘获取它们.解决方法是使用TextWatcher或onKeyboardActionListener.我有以下问题:

(1)有没有办法能够通过实现一个监听器从任何键盘(软或硬)听按键?或基本上是一个适用于两者的API?

(2)TextWatcher或onKeyboardActionListener与onKeyListener()的onKey()方法不同,不传递当前具有焦点的视图(用户正在键入输入).那么,如果我要使用TextWatcher或onKeyboardActionListener,如何获得当前关注的视图?我需要这个能够在EditText上设置一些属性,用户根据输入键入他们的输入.

*相关问题:
onKeyListener not working on virtual keyboard,
onKeyListener not working with soft keyboard (Android),
Android: why is my OnKeyListener() not called?

谢谢!

解决方法 我有同样的问题.并且假设没有好的方法来实现处理软键盘事件的解决方案.我已经为delete事件实现了onKeyListener(),为keys事件实现了TextWatcher.

m_edtRecipIEnts.addTextChangedListener(new TextWatcher() {        boolean bConsumed = false;        @OverrIDe        public voID onTextChanged(CharSequence s,int start,int before,int count) {            if (!bConsumed) {                RecipIEntsTextStyle.format(m_edtRecipIEnts.getText(),m_dbProcessor);            }        }        @OverrIDe        public voID beforeTextChanged(CharSequence s,int count,int after) {            if (count != 0) {                bConsumed = true;                Log.d(TAG,"delete true");            } else {                bConsumed = false;                Log.d(TAG,"erase false");            }        }        @OverrIDe        public voID afterTextChanged(Editable s) {        }    });

TextWatcher方法有一个很大的缺点 – 您无法更改EditText链接的可编辑 – 它将导致循环.小心!

总结

以上是内存溢出为你收集整理的Android – 处理虚拟和物理键盘事件全部内容,希望文章能够帮你解决Android – 处理虚拟和物理键盘事件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1124189.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存