焦点

关键焦点将硬件按键信息转发到应用程序中正确的用户界面元素。例如,用户可以按键盘上的箭头键来移动滑块,或按 Enter 键来点击按钮。

Kanzi 在焦点范围内组织节点。焦点范围是协助处理焦点链导航的节点。它们将子节点分组,并在该组内驱动焦点导航。它们还充当焦点代理,将焦点转发到其可聚焦的子节点之一。当您将焦点从一个焦点范围移开时,该范围会记住最后聚焦的子节点。

这些是焦点在 Kanzi 中如何工作的主要概念:

  • 可聚焦节点 是启用了 Focusable 属性的节点。可聚焦节点可以接收键输入。

  • 键焦点节点 是当前接收键输入的节点,并启用了只读 Focused 属性。一个 Kanzi 应用程序一次只能有一个键焦点节点。

  • 焦点链 是定义 Kanzi 将键焦点设置到这些节点的顺序的节点序列。Kanzi 在焦点链中包含项目中所有可聚焦的节点。

    ../../_images/focus-chain.svg
  • 焦点顺序 根据节点在节点树中的位置或其 Focus Order 属性的值定义节点在焦点链中的位置。

    ../../_images/focus-order.svg
  • 焦点范围 是一个帮助在焦点链中进行导航处理的节点。您可以将一个节点设置为焦点范围,以便将焦点从该节点转移到子节点。

    ../../_images/focus-scope.svg

    这些是 Kanzi 中的焦点范围类型:

    • 焦点组 是一个形成可聚焦节点组的焦点范围。当焦点组节点接收到焦点时,Kanzi 将焦点转发到该焦点范围的焦点节点。

      您可以在焦点组的边界内以及焦点组外移动焦点。

    • Focus fence 是一个焦点范围,它将焦点链导航保持在该范围内,并且不允许焦点链导航进入或离开该范围。Focus fence 允许用户在范围边界内导航内容。

    • 这些覆盖类型的焦点范围:

      • 模态覆盖 阻止来自其边界外的键和触摸输入,并将焦点导航保持在覆盖边界内,就像一个焦点围栏。每个 Kanzi 应用程序至少有一个模态覆盖:Screen 节点。

      • 自动关闭模态叠加层 类似于模态叠加层,不同之处在于,当叠加层是并行活动主机中的一个活动时,并行活动主机会在用户输入源自该活动边界之外时停用该活动。

      • 无模式覆盖 传播源自其边界之外的键和触摸输入,但将焦点导航保持在焦点范围边界内,就像模态覆盖一样。

      • 自动关闭无模式覆盖 类似于无模式覆盖,不同之处在于当覆盖是并行活动主机中的一个活动时,并行活动主机会在用户输入来自该活动边界之外时停用该活动。

  • 焦点状态 报告焦点范围内一个或多个节点的焦点状态。以下是 Focus State 属性的可用值:

    枚举值

    枚举键

    可聚焦节点的含义

    焦点范围的含义

    No Focus

    0

    该节点没有焦点。

    焦点范围内的节点都没有获得焦点。

    Logical Focus

    1

    该节点是覆盖类型焦点范围的逻辑焦点节点。逻辑焦点节点是在覆盖失去焦点之前的关键焦点节点。当覆盖重新获得焦点时,逻辑焦点节点成为关键焦点节点。

    焦点范围中的节点是该范围所属叠加层的逻辑焦点节点。

    Key Focus

    2

    该节点是关键焦点节点。

    在焦点范围内的节点是关键焦点节点。

要详细了解有关为应用程序创建焦点导航的信息,请参阅 使用焦点。

另请参阅

使用焦点

教程:为应用程序创建 UI 导航

处理用户输入