当前位置: 首页 > 知识库问答 >
问题:

Android对讲和片段堆栈

艾善
2023-03-14

对于我工作的应用程序,我需要实现可访问性。除了一个屏幕外,其他一切都很好,我必须将片段添加到我的活动中。基本上,上面的片段是一个拨号键盘,用于输入密码。此片段与fragmentTransaction一起添加。

问题是对讲的焦点是设置在下面片段的元素上。

您知道是否有办法将对讲焦点设置在拨号片段上吗?我只想“禁用”下面的片段以获得焦点

谢谢,

共有3个答案

孔俊捷
2023-03-14

你的问题不是将焦点“发送”到正确的位置。将焦点转移到不同的地方通常是一个坏主意,而且无法实现。你的问题是,屏幕上有一些不可见的元素,但这些元素正被反馈集中。您要做的是隐藏这些元素以防对讲。实际上,您可能希望完全删除它们,但假设它们需要出现在屏幕上。您可以做的是从辅助功能服务中隐藏它们:

rootViewOfFragment.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);

这将从TalkBack隐藏这些视图。这是一个比强制关注特定元素更好的解决方案,因为这通常是WCag 2.0下的可访问性违规。尽管如果屏幕上的元素没有完全被你的“顶部”片段隐藏,这也是一种侵犯,你实际上应该让事情保持原样。

桂高昂
2023-03-14

您正在使用fragmentTransaction。添加

如果是这样,您应该使用fragmentTransaction。代替

添加功能也没有点击下面的片段视图的问题。

所以,请使用替换。

穆才良
2023-03-14

使现代化

我想出了解决办法。在执行片段事务之前,可以禁用第一个片段的可访问性。

rootView = inflater.inflate(R.layout.first_fragment, null, false);

rootView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);

现在提交片段事务。第二个片段不会将焦点泄漏给第一个片段。

不要忘记启用第一个片段的可访问性,以防您回到第一个片段。

if(rootView != null) {
    rootView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
}
 类似资料:
  • 有没有一种方法可以让Android accessibility中的对讲功能在片段事务之后说些什么?我基本上希望对讲机在切换后说出片段的名称/标题。这些标题设置为操作栏的标题,可以在那里访问吗?用户可以将手指移动到操作栏中的文本顶部,以了解他们在哪个屏幕上,但除非用户已经熟悉该应用程序,否则用户不会知道。

  • Back Stack是否支持与Android中的嵌套片段交互? 如果是这样,我做错了什么?在我的实现中,后退按钮完全忽略了我将此事务添加到后堆栈的事实。我希望这不是因为嵌套片段的问题,只是我做了一些不正确的事情。 以下代码位于我的一个片段中,用于将新片段与当前显示的任何嵌套片段交换:

  • 我使用的是支持片段,在片段中我设置了setRetainInstance(true)。我了解到,如果我们在片段中设置了setRetainInstance(true),那么在配置更改时不会调用片段的onCreate()和onDestroy()。但当我在samsung note3中更改字体样式时,仍然会重新创建活动,并调用fragment的onCreate()。这是配置更改吗?如果是,为什么片段实例被初

  • 问题内容: 因此,我到了需要为我的应用程序实现SQLite数据库的地步。遵循“ Android开发的繁忙程序员指南”,我创建了一个Extended的DatabaseHelper类。 我的用例之一是对数据库运行查询,并在内显示结果(我使用支持库中的片段)。 据我了解,使用并不是真正合适的方法,即使不建议使用,因为实际上封装在该方法中的某些逻辑实际上是在主线程上执行的,据我所知具体是在重新启动。 因此

  • 我遇到了一个如何在对话框片段中更新片段的问题。 当我单击过滤器菜单按钮时,会显示一个新的对话框片段,其中包括一个无线电组。 我想在单击ok按钮时更新包含位置列表的片段。 它是PlaceActive的代码,其中包含PlaceFraank: 公共类PlaceActive扩展AppCompatActive{ } 以下是PlaceFragment类的代码: 公共类PlaceFragment扩展了片段{ }

  • 如何从堆栈中弹出特定片段,并从片段中删除其他片段?例如,这些是我的片段,我现在在E right know。 A- 想从E回到B,清除C和D。我怎么能做到这一点?