adb命令可用于检查/更改视图的焦点吗?

时间:2016-11-23 00:08:15

标签: android focus adb

adb可用于对视图,触摸,击键等进行各种操作......

它还可以检查或更改视图的焦点吗?

例如,如果当前活动有很多视图,并且我想在listView上滚动,我可以通过提供其ID来选择要关注的listView,它将获得焦点这样我就可以模拟页面向下键。或者,我可以模拟tab键,直到我看到当前聚焦的视图是listView。

2 个答案:

答案 0 :(得分:0)

您可以通过转储视图层次结构并扫描输出来找出聚焦的视图:

# dump and extract
adb shell uiautomator dump && adb pull /sdcard/window_dump.xml

# prettify if you want
xmllint --format window_dump.xml > window_dump.pretty.xml

# then grep
cat window_dump.pretty.xml | grep focused=\"true\"

<node index="2" text="" resource-id="YOUR_PACKAGE:id/resize_button" class="android.widget.FrameLayout" package="YOUR_PACKAGE" content-desc="Enter dominant view" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="true" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[180,60][252,132]">

答案 1 :(得分:0)

如果有人正在寻找一种通过按 TAB 键来滚动视图的方法,则应执行以下操作

adb shell input keyevent KEYCODE_TAB

如果有人来到这里想通过亚行改变对不同活动(而不是观点)的关注

我们可以使用

获取当前聚焦的窗口/应用程序
adb shell dumpsys window windows | grep -E "mCurrentFocus|mFocusedApp"

为了设置焦点,我们需要一个 2 步过程 1) 获取任务 ID 以使其成为焦点 2) 专注于它

# get the task ID, it is the number after # in the output
adb shell dumpsys activity recents | grep "#"
# set focus
adb shell am task focus <task ID>