Android:如何在软输入/键盘上捕获长按事件?

时间:2014-12-12 02:23:29

标签: android android-edittext android-input-method

简短版本的问题:如何在Android中的软输入/键盘上捕获长按事件?

长版: 在Android应用中,我们有一个多行的EditText,我们希望有这样的行为: 1.默认情况下,它显示一个完成按钮,通过点击它,软输入/键盘将被关闭。 2.如果用户长按DONE按钮,其行为将更改为ENTER按钮,EditText中将有一个新行。

对于要求#1,我在这里使用了解决方案:https://stackoverflow.com/a/12570003/4225326

对于要求#2,我遇到的阻塞问题是,如何捕获长按事件。 我设置了onEditorActionListener,但捕获的事件为null:http://developer.android.com/reference/android/widget/TextView.OnEditorActionListener.html 我搜索了文件,长按相关的方法是硬键盘:http://developer.android.com/reference/android/view/View.html#onKeyLongPress(int,android.view.KeyEvent),我找不到一个软输入/键盘。

感谢您查看此问题。

2 个答案:

答案 0 :(得分:0)

我自己找不到这个答案,所以我手动编写了解决方案。我在onPress()的{​​{1}}和onRelease()事件中使用了计时器。这是重要的代码。为简洁起见,遗漏了许多TRY / CATCH。在英语中,当按下某个键时,我正在启动一个计时器,它等待通常等待的长按事件(KeyboardView.OnKeyboardActionListener),然后在原始线程上执行一个长按事件。随后的按键释放和按键可以取消任何活动计时器。

ViewConfiguration.getLongPressTimeout()

答案 1 :(得分:0)

通过扩展KeyboardView类来创建自定义键盘视图类。覆盖onLongPress()方法