Android TV开发一


在Android TV关于焦点的控件有两种,一种是本来就 可点击的控件(比如Button、CheckBox),一种是本来 不可点击的控件(TextView、ImageView)。

可点击控件

对于可点击控件种控件则无需去主动获取焦点,通过遥控器可以上下左右移动到另外一个可以点击的控件,想要监听点击事件的话,实现OnclickListener就可以了。

不可点击控件

对于不可点击控件,则需要事先在xml文件里面配置以下属性

android:focusable="true"

或者java代码中配置以下代码

View.setFocusable(true);

这样,就可以通过遥控器操作上下左右使焦点移动到原本不可点击的控件上面了。

View.OnKeyListener执行两次的问题
View.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
				if (event.getAction() == KeyEvent.ACTION_DOWN){//拦截按下事件
                    return false;
                }
//                if (event.getAction() == KeyEvent.ACTION_UP){//拦截抬起事件
//                    return false;
//                }
 
                ...
             return false;
            }
        });

以上代码监听了控件的按键事件(控件需要是获取到焦点的控件,可参考可点击控件或者不可点击控件),KeyEvent 中有两种事件,一种是按下和抬起等事件,一种是遥控器的上下左右等按键,当每个动作执行一个按下和一个抬起事件,所以每次点击遥控器均会执行两次事件。解决办法是只监听其中一种事件

强制获取焦点

View.requestFocus()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值