【发布时间】:2014-07-07 18:30:03
【问题描述】:
我正在开发一个在活动和片段中构建的简单应用程序,这是使其可访问的要求之一,因此我完成了所有内容描述、导航、焦点等。
而且它工作得很好,除了片段,如果有一个加载片段的活动,对讲读取它的内容,然后用户点击一些东西和一个可以添加到堆栈顶部的细节片段。
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
audios = AudiosListFragment.newInstance(params);
ft.add(R.id.audios_fragment_holder, audios);
ft.commit();
如果用户继续导航对讲仍然记得丢失片段的每个元素的位置。
有没有办法清除事件的可访问性列表并强制它再次获取它?可访问性管理器似乎没有任何方法。
AccessibilityManager manager = (AccessibilityManager) getActivity().getSystemService(Context.ACCESSIBILITY_SERVICE);
manager.getAccessibilityServiceList();
--已编辑-- 我尝试过但没有成功的事情。
从片段中的视图创建发送事件。
AccessibilityEvent event =
AccessibilityEvent.obtain(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
AccessibilityDelegate delegate = new AccessibilityDelegate();
v.setAccessibilityDelegate(delegate);
delegate.dispatchPopulateAccessibilityEvent(container, event);
中断片段的 onResume 上的所有待处理文本。
AccessibilityManager mgr = (AccessibilityManager)
getActivity().getSystemService(Context.ACCESSIBILITY_SERVICE);
mgr.interrupt();
请求装饰器视图注册window_content_change或window_state_change事件。
getWindow().getDecorView()
.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
--已编辑-- 制作了一个 DumpView Hierarchy 并且没有被解雇的片段的痕迹,但对讲仍然可以导航它:(
谢谢,希望有人能对这个问题有所了解:)
问候。
【问题讨论】:
-
谢谢,这实际上清除了焦点,但是如果添加了片段,它仍然可以在下面的片段上导航。
标签: android android-fragments accessibility talkback