android tv 按键

android:focusable
用键盘是否能获得焦点,如果设置为true,则键盘上下左右选中,焦点会随之移动


android:focusableInTouchMode
非键盘是否能获得焦点,如果设置为true,点击屏幕的上的某个控件时,不要立即执行相应的点击逻辑,而是先显示焦点(即控件被选中),再点击才执行逻辑。
focusableInTouchMode这种属性,多半是设给EditText这种即使在TouchMode下,依然需要获取焦点的控件.比如Button之类的控件,自身拥有focusableInTouchMode,就没有必要获取焦点


android:focusable=“true”不会改变android:focusableInTouchMode,因此只在键盘状态下显示焦点,在非键盘状态下,依旧无法显示焦点。
android:focusable=“false”,一定会使android:focusableInTouchMode=“false”
android:focusableInTouchMode=”true”,一定会使android:focusable=“true”
android:focusableInTouchMode=“false”,不会影响android:focusable
 
非键盘开发,如果要获取焦点,只需要设置android:foucusableInTouchMode=“true”


android:clickable
所有的获取焦点,都要有一个前提,那就是该控件必须设置android:clickable=”true”,如果都点击不了,设置焦点应该没什么意义;设置为true时,表明控件可以点击,如果为false,就不能点击;setOnClickListener方法会默认把控件的setClickable设置为true。


setEnabled()
设置是否激活控件,如果设置为false,该控件永远不会活动,不管设置为什么属性,都无效;
设置为true,表明激活该控件,控件处于活动状态,处于活动状态,就能响应事件了,比如触摸、点击、按键事件等;setEnabled就相当于总开关一样,只有总开关打开了,才能使用其他事件。


requestFocus()
设置是否获得焦点。
一般想让某个控件获得焦点:
view.requestFocus();

view.setFocusable(true);



@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {
        case KeyEvent.KEYCODE_0:
            Toast.toastInfo(this, "你按下数字键0");
            break;
        case KeyEvent.KEYCODE_DPAD_CENTER:
            Toast.toastInfo(this, "你按下中间键");
            break;
        case KeyEvent.KEYCODE_DPAD_DOWN:
            Toast.toastInfo(this, "你按下下方向键");
            break;
        case KeyEvent.KEYCODE_DPAD_LEFT:
            Toast.toastInfo(this, "你按下左方向键");
            break;
        case KeyEvent.KEYCODE_DPAD_RIGHT:
            Toast.toastInfo(this, "你按下右方向键");
            break;
        case KeyEvent.KEYCODE_DPAD_UP:
            Toast.toastInfo(this, "你按下上方向键");
            break;
        case KeyEvent.KEYCODE_ALT_LEFT:
            Toast.toastInfo(this, "你按下组合键alt+←");
            break;
    }
    return super.onKeyDown(keyCode, event);
}


坑1:

代码创建button,给button设置setX()或者setY(),无法获取焦点

setX()或者setY()改成leftMargin或者topMargin

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值