写点什么

焦点控制

作者:flfljh
  • 2024-12-24
    湖南
  • 本文字数:1002 字

    阅读完需:约 3 分钟

在 HarmonyOS 应用开发中,焦点控制对于实现良好的用户交互体验至关重要。该网页文档主要介绍了 HarmonyOS 中与焦点控制相关的一系列属性、方法和组件,用于管理组件的获焦能力、走焦顺序、默认焦点设置以及焦点框样式等,从而实现用户通过键盘(如 tab 键、方向键)或触摸操作在应用界面中进行便捷的焦点切换和交互操作,适用于从 API Version 8 开始的版本,部分功能从 API version 11 或 12 开始支持,且在元服务中有相应的 API 应用场景。

主要属性及方法介绍

  1. 组件获焦相关属性

  2. **focusable**:设置组件是否可获焦,如 Button 等默认可获焦,Text 等默认不可获焦,不可获焦时无法触发焦点事件。

  3. **tabIndex**:自定义组件 tab 键走焦能力,大于 0 时按其值从小到大循环走焦,等于 0 时按预设规则走焦,小于 0(通常为 -1)表示可聚焦但不能通过 tab 键访问,且与focusScopeId不能混用,UiExtension组件未适配该属性。

  4. **defaultFocus**:设置组件是否为页面初始默认焦点,仅初次创建页面第一次进入时生效,若页面无此设置,API version 11 及之前首个可获焦非容器组件为默认焦点,之后版本页面根容器为默认焦点,多个设置时以组件树深度遍历第一个为准。

  5. **groupDefaultFocus**:需与tabIndex联合使用,设置组件在所在容器获焦时是否为默认焦点,仅初次创建容器节点第一次获焦时生效,多个设置时以组件树深度遍历第一个为准。

  6. **focusOnTouch**:设置组件是否支持点击获焦,仅在组件可点击时有效。

  7. 焦点控制相关方法及属性

  8. **requestFocus**:全局接口,可使焦点转移到指定组件,但非当前帧生效,建议使用FocusController中的requestFocus。支持焦点控制的组件包括 TextInput、TextArea 等,焦点事件仅在真机上显示运行效果。

  9. **focusBox**:从 API version 12 开始支持,用于设置组件系统焦点框样式,包括相对组件边缘距离、颜色和宽度等,仅影响走焦状态下展示系统焦点框的组件。

  10. **focusScopePriority**:从 API version 12 开始支持,设置组件在指定容器内获焦优先级,需配合focusScopeId使用,优先级有 AUTO(默认)、PRIOR(优先获焦)、PREVIOUS(上一次容器整体失焦时获焦节点优先级),容器整体获焦和非整体获焦时有不同的获焦规则。

  11. **focusScopeId**:从 API version 12 开始支持,设置容器组件 id 标识及是否为焦点组,单个层级页面下 id 全局唯一,焦点组不可嵌套和重复配置,且不能和tabIndex混用,焦点组内只能通过方向键走焦,有特定的走焦规则。


用户头像

flfljh

关注

还未添加个人签名 2024-10-29 加入

还未添加个人简介

评论

发布
暂无评论
焦点控制_flfljh_InfoQ写作社区