简短版本的问题:如何在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),我找不到一个软输入/键盘。
感谢您查看此问题。
答案 0 :(得分:0)
我自己找不到这个答案,所以我手动编写了解决方案。我在onPress()
的{{1}}和onRelease()
事件中使用了计时器。这是重要的代码。为简洁起见,遗漏了许多TRY / CATCH。在英语中,当按下某个键时,我正在启动一个计时器,它等待通常等待的长按事件(KeyboardView.OnKeyboardActionListener
),然后在原始线程上执行一个长按事件。随后的按键释放和按键可以取消任何活动计时器。
ViewConfiguration.getLongPressTimeout()
答案 1 :(得分:0)
通过扩展KeyboardView类来创建自定义键盘视图类。覆盖onLongPress()方法