在阅读了几个类似问题的答案之后*我确实意识到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 start, 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链接的可编辑 – 它将导致循环.小心!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。