Skip to content

选择示例

一些选择器及其相关作用说明

选择根节点

  • [parent=null]
  • [depth=0]

选择子节点

选择一个 ImageView 节点, 并要求其父节点是 LinearLayout

LinearLayout > ImageView

选择一个 ImageView 节点, 并要求其父节点的父节点是 ViewGroup[vid="avatar_layout"]

ViewGroup[vid="avatar_layout"] >2 ImageView

选择一个 ImageView[vid="search_icon"] 节点, 并要求祖先节点是 FrameLayout[vid="content_layout"], n可以是任意正整数, 下同

FrameLayout[vid="content_layout"] >n ImageView[vid="search_icon"]

末尾子节点

选择一个 ImageView 节点, 并要求是其父节点是最后一个子节点

ImageView[index=parent.childCount.minus(1)]

选择兄弟节点

选择一个 LinearLayout[desc="搜索栏,按钮"] 节点, 并要求其兄弟节点是 ViewGroup[desc="个人主页,按钮"]

选择一个 [text$="顶级入耳"] 节点, 并要求其兄弟节点是 [vid="cover_layout"]

选择父节点

选择一个 ViewGroup[desc^="直播"] 节点, 并要求其子节点是 FrameLayout[vid="cover_layout"]ViewGroup[vid="live_text_container"]TextView[vid="title_v2"]

在指定节点的子节点内查找指定选择器

一般在末尾节点支持 快速查询 的情况下使用

在节点 ViewGroup[vid="live_text_container"] 的子节点内查找 [text="直播"]

@[text="直播"] <<n ViewGroup[vid="live_text_container"]

在节点 FrameLayout[vid="swipe_layout"] 的子节点内查找 LinearLayout > @[text="直播"]

LinearLayout > @[text="直播"] <<n [vid="swipe_layout"]

组合使用

ImageView < FrameLayout <n ViewGroup[desc^="直播"] - ViewGroup >4 FrameLayout[index=0] +2 FrameLayout > @TextView[index=parent.childCount.minus(1)] <<n FrameLayout[vid="content"]

一些方法用例

node类型的getChild()

选择一个 ViewGroup[desc^="直播"] 节点, 并要求其第1位子节点vid等于 cover_layout

选择一个 ViewGroup[desc^="直播"] 节点, 并要求其第3位子节点内的第1位子节点类型为 TextView

选择一个 ViewGroup[desc^="直播"] 节点, 并要求其末尾子节点vid等于 more

context类型的getPrev()

已知符合选择器 @[clickable=true] >(1,2) [vid="cover"] 的节点有6个,现要求根据屏幕分辨率对节点位置作出限制。

思路:从右侧根节点处获取屏幕宽高,通过getPrev()传到左侧目标节点,随后根据要求做限制

另外由于使用了<<n [parent=null],所以结果仅显示第一个,具体缘由请看主动查询

限制在左半屏:

限制在右下(1/4)屏:

Released under the GPL-v3 License.