模拟软键盘
有些场合我们需要使用自己定义的虚拟键盘,该键盘是一个自定义布局,我们可能需要点击按钮的时候模拟出软键盘的效果。 这时候可以使用
new Thread() {
public void run() {
Instrumentation inst = new Instrumentation();
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_ENTER);
};
}.start();
来实现。 Instrumentation 这个类是在Android 单元测试的时候生成各种事件的时候使用到的类,通过该类我们可以发出各种按键及其它事件。
需要注意的是发出的事件必须在新的线程中产生。
因为项目需要,我需要做一个自定义数字键盘,当在输入框点击next的时候我希望可以移动到下一个输入框。这时候可以使用上面的代码来实现,发出软键盘的enter键。
并且改输入框的 singleline设置为true
但是实际使用的时候发现有些输入框中它不会自动切换到下面的输入框。
通过研究发现,当一个输入框实现了其 OnClickListener 的时候通过"Enter"键自动切换功能失效,具体原因不清楚。就这里让我花费了很多时间,让人很郁闷。
在这里记录一下心得,当有人需要实现类似的功能的时候可以帮助到TA。
浙公网安备 33010602011771号