前言

Android TV是通过遥控器控制的,没有触摸事件的,而是处理

等按键值。

然后就涉及到一些按键的焦点状态问题,这里简单的记录一下,方便自己查阅。

正文

这些焦点的状态可以用Java代码控制,也可以通过配置xml来控制。

focusable

是否要获取到焦点

  1. android:focusable="true|false"
复制

对应的代码

  1. view.setFocusable(true|false);
复制
setFocusableInTouchMode

是否触摸后获取到焦点

  1. android:setFocusableInTouchMode="true|false"
复制

对应的代码

  1. view.setFocusableInTouchMode(true|false);
复制

默认是false,也就不设置是,当用户点击是不会有聚焦被点击的控件的。

focusedByDefault

看文字意思是默认获取焦点的配置

  1. android:focusedByDefault="true|false"
复制

对应的代码

  1. view.setFocusedByDefault(true|false)
复制

当这个属性我项目中配置后没有效果。(后续跟进)

因此只要代码中通过设置requestFocus()强制获取焦点。

defaultFocusHighlightEnabled
  1. android:defaultFocusHighlightEnabled="true|false"
复制

对应的代码

  1. view.setDefaultFocusHighlightEnabled(true|false);
复制

原生控件获取焦点高亮显示。(项目中没用过这个)

控制焦点移动方向
  1. nextFocusDown
  2. nextFocusLeft
  3. nextFocusRight
  4. nextFocusUp
复制

具体这里就不解释了。

setOnFocusChangeListener

这个是View监听焦点丢失和获取变化,然后做一定的处理。

参考文章

  1. Android TV开发过程及焦点问题处理
  2. Android TV 焦点控制
  3. 从源码出发浅析 Android TV 的焦点移动原理 (上篇)

相关文章

暂无评论

none
暂无评论...