Android自定义软键盘实现

Android 里的软键盘你肯定用过,但要是你想整一个自己的,比如输入密码、验证码那种专属样式的,还真得自己动手定制一套。自定义软键盘的套路,其实不复杂,主要就靠继承InputMethodService,把你想要的键盘样子用 XML 布局出来。

先说服务部分,Android 自带的InputMethodService就是干这个的。重写里面几个关键方法,比如onCreateInputView()搞 UI,onKey()管按键响应。响应也快,代码也清晰。

布局这块儿用KeyboardKeyboardView两个类来搭,布局文件里一个个key就代表一个按键。你可以随意安排,比如密码键盘只放数字,符号就不要。按键行为也能自定义,怎么点怎么来。

onKey()是你整个键盘的灵魂了。像普通字母就插进输入框,Delete就删字符,Enter还能提交表单。你要是想搞个“清空”键也可以,逻辑一加就行。

还有一个关键点:输入框的焦点状态控制键盘的显示。你可以在onStartInput()onStopInput()里写逻辑,比如失去焦点就收起,别挡着界面。用户体验一下子就提上来了。

别忘了在AndroidManifest.xml里注册服务。权限也要加,比如VIBRATE,给键盘加点震动反馈,手感不错。

启用的时候可以用InputMethodManager手动调出键盘,自己控制什么时候显示,适合某些定制场景,比如游戏或者输入特殊指令。

做完之后,适配要做好。不同机型、不同 Android 版本别掉坑里了。建议测试下高低分辨率、平板和老机器,能跑才算合格。

你还可以加些动效,比如按下时的高亮,用KeyboardView的回调方法就能搞定。视觉反馈强,用户按起来也更舒服。

不同场景下的布局文件建议多准备几套,比如一个纯数字的,一个带符号的,场景一变直接切,灵活多了。对了,压缩包里的keydemo资源挺全的,布局、逻辑、服务类都有。

如果你在搞医疗、金融、输入安全这类 App,真的建议整一个自己的软键盘。不靠系统,稳定性和体验都能往上拉一档。

zip 文件大小:125.37KB