Android软键盘上移动焦点

23 篇文章 0 订阅

TV上的软键盘不需要再在TVtouch软键盘按钮,需要通过遥控器进行操作,因此需要在软键盘上知道目前是在哪个键子上,这需要通过焦点来实现。

 

LatinIME输入法改写功能代码:

添加功能:为输入法软键盘键子添加焦点(边框),并支持键盘上的方向键,在按上下左右方向键时,焦点跟着方向键移动;并支持键盘回车按钮,在按下回车键后,将软键盘对应键子内容输入到editor(编辑框);

代码修改描述:

     要拦截键盘的按钮事件,需要在代码中重写onKeyDown(int keyCode, KeyEvent event)方法,参数keyCode可以是键盘上按键对应的KeyEevent中的值。要使有效输入法拦截键盘上按键事件,需要在特定类中重写onKeyDown(int keyCode, KeyEvent event)方法。一开始我重写的是LatinKeyboardView中的onKeyDown(int keyCode, KeyEvent event)方法,但在运行后,没有拦截到键盘上的方向键按钮的down事件,经过查阅文档,了解到输入法的执行入口是InputMethodService类及其子类,在其中有创建输入法软键盘的一系列回调方法,创建用以输入视图,候选区视图等。要拦截键盘的按钮事件,也需要在InputMethodService子类中重写onKeyDown(int keyCode, KeyEvent event)方法。然后运行到模拟器上,你在按下键盘上的方向键时,输入法就可以有效拦截你的键盘按钮事件,在LatinIME中的onKeyDown(int keyCode, KeyEvent event)方法中的添加方向键按钮事件,通过控制键在键盘上的xy来控制焦点的移动;

 

焦点的移动:

 在软件盘上画焦点,并跟随键盘方向键进行移动。

首先要做的是在适当的类中,画出焦点,实际上的焦点是通过在键子边上画边框来实现,Android中可以通过重写onDraw(Canvas canvas)方法来实现;要在软键盘的输入视图上的键子上画边框,就不是在LatinIME这个InputMethodService子类中重写onDraw(Canvas canvas)方法了,而应该是在创建输入视图的类中进行重写onDraw(Canvas canvas)方法,及在LatinKeyboardView类(KeyboardView的子类)中重写onDraw(Canvas canvas)

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VoidHope

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值