焦点 Builder
这一页只介绍用于配置焦点表的 builder 方法。焦点机制的整体说明见 焦点机制,运行时通过 ViewId 操控焦点的 API 见 ViewId。
实际公开的 trait 是:
focus_index
focus_index 把控件加入焦点表,并设置它在 Tab 顺序里的排序值。
0 是合法排序值,不能把它理解成取消焦点。数字越小,越先被 Tab 访问。同一个排序值也能工作,最终排序还会包含 ViewId 和虚拟焦点序号;不过给同一组控件使用清晰递增的值更容易维护。
不写 focus_index 就是不加入焦点表。这样的控件不会被 Tab 选中,也不会成为控件级 on_key_* 的焦点目标。
focus_scope
focus_scope 给当前控件及其子树提供一个排序偏移。它适合把页面拆成几个区域,让每个区域内部从 0 开始编号。
上面的最终排序值是:
focus_scope 可以嵌套,父级偏移会继续累加给子树。
注意:builder 的 focus_scope(u32) 只影响排序,不限制 Tab 的运行时范围。弹出层、Modal 这类焦点隔离场景使用 ViewId::push_focus_scope() 和 ViewId::pop_focus_scope(),机制说明见 焦点机制。

