如何检测是不是按下退格键?
Posted
技术标签:
【中文标题】如何检测是不是按下退格键?【英文标题】:How to detect if backspace is pressed?如何检测是否按下退格键? 【发布时间】:2020-05-31 16:06:50 【问题描述】:mainNotes.setOnKeyListener(new View.OnKeyListener()
public boolean onKey(View v, int keyCode, KeyEvent event)
if ((keyCode != KeyEvent.KEYCODE_SLASH) && (titleMod = true) && (keyCode != 46) && (keyCode != KeyEvent.KEYCODE_SLASH) && (keyCode != KeyEvent.KEYCODE_ENTER))
Toast.makeText(MainActivity.this, "not a slash", Toast.LENGTH_SHORT).show();
titleEnd += 1;
slashCount = 1;
else if ((keyCode == KeyEvent.KEYCODE_DEL) && (titleMod = true))
Toast.makeText(MainActivity.this, "deleted", Toast.LENGTH_SHORT).show();
titleEnd -= 1;
代码无法识别已按下删除。它适用于所有其他按键,如斜杠、其他文本等。它甚至没有记录删除被按下?
【问题讨论】:
您在测试这段代码时实际按的是什么键? @MarsAtomic 我电脑上的删除键。另外,我只是注意到它无法识别模拟器上软件键盘上的按键...?也许这与它有关? KEYCODE_DEL 对应于您的退格键。标准的 android 键盘实际上根本没有删除键,因此您需要按退格键。 @MarsAtomic 知道了。 OnKeyListener 无法识别来自 android 键盘的任何按键。你知道为什么吗? 【参考方案1】:KeyEvent.KEYCODE_DEL
对应于您的退格键。标准的 Android 键盘实际上根本没有删除键,因此您在通过键盘在模拟器上进行测试时需要按退格键。
为确保检测到软键事件,请避免使用KeyListener
接口,因为它不太可能被软件键盘或模拟器识别。来自official documentation:
软输入法上的按键不需要触发 这个监听器中的方法,实际上不鼓励这样做。这 默认的 android 键盘不会为任何键触发这些 以 Jelly Bean 或更高版本为目标的应用程序,并且只会交付它 对于针对冰淇淋三明治的应用程序的某些按键或 早一点。
请尝试使用KeyboardView.OnKeyboardActionListener
。
可以在here找到示例代码。
【讨论】:
以上是关于如何检测是不是按下退格键?的主要内容,如果未能解决你的问题,请参考以下文章