目录
前言
Android TV是通过遥控器控制的,没有触摸事件的,而是处理
KeyEvent.KEYCODE_DPAD_UP
KeyEvent.KEYCODE_DPAD_DOWN
KeyEvent.KEYCODE_DPAD_CENTER
KeyEvent.KEYCODE_DPAD_LEFT
KeyEvent.KEYCODE_DPAD_RIGHT
等按键值。
然后就涉及到一些按键的焦点状态问题,这里简单的记录一下,方便自己查阅。
正文
这些焦点的状态可以用Java代码控制,也可以通过配置xml来控制。
focusable
是否要获取到焦点
android:focusable="true|false"
对应的代码
view.setFocusable(true|false);
setFocusableInTouchMode
是否触摸后获取到焦点
android:setFocusableInTouchMode="true|false"
对应的代码
view.setFocusableInTouchMode(true|false);
默认是false,也就不设置是,当用户点击是不会有聚焦被点击的控件的。
focusedByDefault
看文字意思是默认获取焦点的配置
android:focusedByDefault="true|false"
对应的代码
view.setFocusedByDefault(true|false)
当这个属性我项目中配置后没有效果。(后续跟进)
因此只要代码中通过设置requestFocus()强制获取焦点。
defaultFocusHighlightEnabled
android:defaultFocusHighlightEnabled="true|false"
对应的代码
view.setDefaultFocusHighlightEnabled(true|false);
原生控件获取焦点高亮显示。(项目中没用过这个)
控制焦点移动方向
nextFocusDown
nextFocusLeft
nextFocusRight
nextFocusUp
具体这里就不解释了。
setOnFocusChangeListener
这个是View监听焦点丢失和获取变化,然后做一定的处理。
参考文章
© 版权声明