电视机顶盒项目需要用到键盘输入,众所周知,电视的遥控按键较少,无法满足输入的需求,如要输入英文、数字、符合组合的字母时。遥控器的按键就无法满足。基于以上需求,在网上查找了许多资料,和Google api sample 里面的softkeyboard后,终于完成了一个简单的键盘,并可以遥控控制键盘的输入。通过这几天对输入法这块代码的研究,做些总结方便日后查看。
键盘效果图如下
1、关于输入法焦点问题。
Android SoftKeyBoard 输入法默认在横屏模式下,会全屏显示,可以通过 onEvaluateFullscreenMode() 重载来控制。
public boolean onEvaluateFullscreenMode() {
// TODO Auto-generated method stub
// 设置输入法在横屏模式下不全屏
return false;
}
经过多次测试 Android 系统管理View的焦点的 顺序是这样的,
IF( 输入法显示)
焦点由输入法控制
ElSE
由View获得焦点和ONKey的所有事件
也就算说输入法的优先级高于View,可以在InputMethodService 重载onKeyDown()、onKeyUp()来控制key事件的传递。
2、关于KeyBoardView 与KeyBoard。
KeyBoard 键盘布局可以xml 文件产生,KeyBoardView继承了View ,可以当做View一样来使用它。KeyBoardView通过 .setKeyboard()方法设置键盘,即可将键盘放入View中。
参考链接:
《在软键盘上绘制焦点并移动焦点》http://www.eoeandroid.com/blog-126933-105.html
《Android自定义软键盘的实现》 http://blog.csdn.net/hfsu0419/article/details/7924673