android - 如何在 fragment View 内激活 Talkback?

标签 android talkback accessibility-api

我目前正在我的应用程序中添加辅助功能作为新功能。 我的目标是用户将使用 TalkBack 进行导航。 Android 集成的服务。

一切正常,因为我在 Activity 布局内的元素上设置了内容描述,即

        <View
          style="@style/custom.style"
          android:contentDescription="@string/my_string_value"/>

这样,每次显示我的 Activity 时,TalkBack 都会读取内容描述值。

仅使用一项向其推送多个 fragment 的 Activity ,我还没有取得同样的成功。因此,如果我尝试在 fragment 布局内的任何元素上设置内容描述,则在检测到触摸事件之前不会(自动)读取该内容(我希望 TalkBack 会自动执行此操作,就像 Activity 布局中的 View 一样)

为了获得我期望的结果,我在 fragment 类中这样做:

public abstract class myFragment extends Fragment  {
...
  @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,   Bundle savedInstanceState) {
       ...
       myCustomView = (LinearLayout) rootView.findViewById(R.id.duende);
       myCustomView.requestFocus();
  }
}

到目前为止,这还没有成功,将可访问性设置为内容更改也是如此。

getWindow().getDecorView().sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);

有人遇到过类似的问题吗?

最佳答案

不确定您是否仍在寻找解决方案,但对于 future 的寻求者:) -

很多时候,焦点请求仅在 post/postdelay 函数中调用一次后才会起作用。

示例 -

myCustomView.postDelayed(new Runnable() {
            @Override
            public void run() {
                myCustomView.setFocusable(true);
                myCustomView.requestFocus();
                myCustomView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
            }
        },1000);

在使用 fragment 时,我喜欢调用焦点、输入焦点(如上一个答案中的人所调用的那样)和可访问性焦点,因为在 fragment 上实现可访问性时,您可能会遇到一些恼人的问题。因此这总是对我有用。

关于android - 如何在 fragment View 内激活 Talkback?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32598131/

相关文章:

android - 不要隐藏抽屉导航

android - 试图将 adb 添加到 PATH 变量 OSX

KitKat 中的 Android WebView 可访问性

ImageView 的 Android 辅助功能

Android:如何检查是否启用了特定的 AccessibilityService

Android:以编程方式向布局添加按钮

java - 位置管理器检查权限

android - PagerTabStrip TalkBack 辅助功能

macos - 苹果应用商店 : Is Sandboxing the App mandatory?

android - 生物识别提示和辅助服务