焦点设置 (一)

对焦点的处理是Android 电视开发与手机开发最大的区别之一。在手机上,关于焦点我们几乎不需要做额外的处理;而在电视机上则需要做大量的处理,如:焦点的显示样式(颜色、大小等)、焦点的导航、显示动画等。
focusable与focusableInTouchMode

在xml中对view设置属性:
android:focusable=”true”
android:focusableInTouchMode=”true”

动态设置:
View.setFocusable(true);
View.setFocusableInTouchMode(true)

上述属性focusable设置为true时当前控件才能获得焦点;反之,不能获得焦点。focusableInTouchMode用于设置是否可以通过触摸获取焦点。在手机应用开发中一般不需要对上述属性进行设置,电视应用很有必要,因为电视通常是通过遥控器来控制焦点的(也可以是鼠标)。

requestFocus

动态设置:
View.requestFocus();

xml中:

为控件设置焦点,通常会优先获取焦点(可能某些控件会抢夺焦点,如EditText)。打开页面时,通常会使用它来决定谁优先获得焦点。

descendantFocusability

当焦点获取出现问题是你可以尝试设置descendantFocusability属性 ,有以下三中值:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

建议简化布局层级,层级过多会导致焦点处理变得复杂,也很难实现特殊的焦点选中效果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值