【问题标题】:How to activate Talkback inside of an fragment's views?如何在片段视图中激活对讲?
【发布时间】:2018-04-25 18:23:21
【问题描述】:

我目前正在我的应用程序中添加可访问性作为一项新功能。 我的目标是用户将使用 Android 集成的 TalkBack 服务来导航它。

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

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

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

仅使用一个在其上推送多个片段的活动,我还没有取得同样的成功。因此,如果我尝试在片段布局内的任何元素上设置 content description ,则在检测到触摸事件之前不会(自动)读取它(我希望 TalkBack 会自动执行它,就像活动布局中的视图一样)

为了在片段类中得到我期望的结果:

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);

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

【问题讨论】:

    标签: android talkback accessibility-api


    【解决方案1】:

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

    很多时候焦点请求只在 post/postdelay 函数中调用一次。

    示例 -

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

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

    【讨论】:

      【解决方案2】:

      首先,重要的是要注意片段的功能与正常活动中的布局没有什么不同。片段只是构建代码的一种便捷方式。如果您将应用程序编码为一系列片段或单个活动中的一堆布局,Android/Accessibility API 会看到什么是相同的。话虽如此,我相信您正在寻找的是以下内容:

      您需要做的是移动可访问性焦点。

      myCustomView.requestFocus();
      

      正在移动我认为的输入焦点。这对 TalkBack 没有影响,实际上几乎完全没有意义,除非您使用键盘导航,或者我们正在谈论 EditText 框。您要做的是移动辅助功能/TalkBack 焦点。这可以通过以下代码行来完成:

      myCustomView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
      

      注意:请牢记 WCag 2.0 标准,尤其是在自动将焦点转移到 TalkBack 用户时。这可能会让视力不佳的用户感到非常困惑!

      【讨论】:

        猜你喜欢
        • 2019-12-22
        • 1970-01-01
        • 2012-01-05
        • 2017-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多