- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想滚动当前屏幕。我试过这个
但我总是说“无法在密封实例上执行此操作”。请帮忙。
AccessibilityNodeInfo accessibilityNodeInfo=getRootInActiveWindow();
accessibilityNodeInfo.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_DOWN);
最佳答案
首先:您尝试做的事情存在问题。
当你看到这个
Cannot perform this action on a sealed instance.
此消息是 Android 告诉您您拥有的信息已设置。能够说出一个不可滚动的 View 对您来说有意义吗?不。您不能强制 View 可滚动。可滚动的 View 取决于 View 。例如,可滚动的 Button 是没有意义的!无障碍服务无法强制执行此行为。
应用程序的根节点很可能是某种类型的框架布局,并且永远无法滚动。层次结构的可滚动部分几乎总是主布局/ Root View 的 subview 。这个故事的寓意是,您不能说一个 View 是可滚动的,您必须找到一个可滚动的 View 。
话虽如此,我将为您提供一个更好的解决方案,希望它在您支持的设备范围内。
@TargetApi(Build.VERSION_CODES.M)
public boolean scrollTo(AccessibilityNodeInfo nodeInfo) {
return nodeInfo.performAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SHOW_ON_SCREEN.getId());
}
如果您需要支持 Android M 之前的版本,您需要做的是探索布局中 View 的 AccessibilityNodeInfo 层次结构,如果这是真的,这看起来大概像这样(未测试,但应该非常接近! ):
public boolean scrollView(AccessibilityNodeInfo nodeInfo) {
if (nodeInfo == null) return false;
if (nodeInfo.isScrollable()) {
return nodeInfo.performAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD);
}
for (int i = 0; i < nodeInfo.getChildCount(); i++) {
if (scrollView(nodeInfo.getChild(i)) {
return true;
}
}
return false;
}
关于android - 使用 AccessibilityService 中的 AccessibilityNodeInfo 执行滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44566402/
我正在开发一个 Android 应用程序,其中包含辅助功能服务,允许用户创建“宏”,该宏可以快速、自动地执行他们经常使用他们已经使用的第三方应用程序执行的任务(而不必与某些对讲服务交互,在该服务中,他
我正在开发一个 Android 应用程序,我必须将文本发送到其他应用程序的焦点 EditText 字段。 我在 API level 18 及更高版本中使用 AccessibilityService 完
使用Android 4.2.2 我正在尝试编写一个 AccessibilityService,并且具有大多数所需的功能。我正在覆盖层上绘图,并允许用户通过蓝牙开关选择/点击突出显示的项目(目的是希望仅
所以我是新手,一直在玩弄 onAccessibilityEvent 并阅读来自其他应用程序屏幕上的 TextViews,它运行良好,但现在我想能够使用 AccessibilityNodeInfo.AC
我想使用无障碍服务执行滚动,我正在这样做 public boolean scrollView(AccessibilityNodeInfo nodeInfo) { if (nodeInfo == nul
我有一个为事件类型“typeViewTextSelectionChanged”运行的无障碍服务。每当用户选择任何文本时,我都能够捕获此事件触发器,但是如何从 AccessibilityNodeInfo
我正在开发 Android 辅助功能服务。我有一个 AccessibilityNodeInfo表示一个 EditText。是否可以编辑包含的文本? 我尝试使用 mynode.setText("aaa"
我正在开发一种无障碍服务,具有类似的触摸探索功能。 我可以通过以下方式聚焦菜单和主屏幕图标 public void updateViewNodes(AccessibilityNodeInfo sour
我在我的应用程序中使用 AccessibilityService 将一些文本粘贴到另一个应用程序的 EditText 中。 我正在使用以下代码来实现相同的目的, Bundle bundle = new
我正在创建一个需要使用 AccessibilityService 的应用程序。而且获取其他应用程序的窗口内容也没有问题。我已经从窗口内容中检测到所有可用的子节点,并且该子节点显示在 Accessibi
我正在编写一个AccessibilityService,我想在无障碍服务可以检索的当前 Activity 的 View 上创建 View 覆盖。从当前 Activity 中检索所有 Accessibi
我已经阅读了 https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html
我想滚动当前屏幕。我试过这个 AccessibilityNodeInfo accessibilityNodeInfo=getRootInActiveWindow(); accessibilityNod
我正在为 Android 编写一个 AccessibilityService,直到 API 级别 20,我一直在使用 AccessibilityEvent.getSource() 方法来获取可遍历的
我使用辅助功能服务将所有文本显示在屏幕上。正常工作几分钟后,它导致了一些 GC allocated... 日志的 ANR,几秒钟后,它崩溃并出现以下错误: @Override public void
收到大量 ANR 报告, "main" prio=5 tid=1 Runnable | group="main" sCount=0 dsCount=0 flags=0 obj=0x72e8a568 s
我正在尝试使用以下代码创建 TextView 的 AccessibilityNodeInfo: protected void onCreate(Bundle savedInstanceState) {
我正在尝试使用 AccessibilityNodeInfo 但是当我使用 event.getSource() 它总是返回 null,我尝试读取浏览器的编辑框这是我的代码: public class M
我试图让 TalkBack 说出 host View 内的文本内容,然后加上“很酷”。 为此,我在线性布局上设置辅助功能委托(delegate),但 info 参数的 text 和 contentDe
我正在尝试访问另一个应用程序的文本内容,该应用程序可能是使用基于非 native (js+html)的框架构建的。 因此,我想我会尝试从与 WebView 元素对应的可访问性节点访问数据。但是,我无法
我是一名优秀的程序员,十分优秀!