UI元素在父片段上的可访问性焦点

时间:2018-09-10 13:51:45

标签: android android-accessibility

我正在尝试为类似于以下屏幕的屏幕添加辅助功能支持(屏幕阅读器)

enter image description here

按钮1和按钮2是单个片段的一部分,而TextView是另一个子片段的一部分。 使用屏幕阅读器进行导航时,焦点将从 按钮1> TextView

从TextView向左滑动时,焦点不会到达按钮2。而是,按钮1再次接收了焦点。

如何确保按钮2正确接收了可访问性焦点。

父片段的布局

<RelativeLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:focusableInTouchMode="true"
        android:text="Button 1" />

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/rootLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/button_container"
        android:overScrollMode="never">

    </android.support.design.widget.CoordinatorLayout>

    <FrameLayout
        android:id="@+id/button_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:clickable="true"
        android:focusable="true"
        android:gravity="center">

        <Button
            android:id="@+id/button2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:importantForAccessibility="yes"
            android:text="Button 2" />

    </FrameLayout>
</RelativeLayout>

子片段的布局

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView"
            android:importantForAccessibility="yes"/>
    </android.support.constraint.ConstraintLayout>

注意:如果此布局在大多数设备上都经过测试,则焦点将集中在按钮2上,而无需进行额外的工作。但是在某些三星设备(s8,s9)中并非如此

我尝试了以下方法

  1. 确定在辅助功能模式下TextView何时处于焦点状态
  2. 确定屏幕上的触摸并向右滑动
  3. 通过触发AccessibilityEvent.TYPE_VIEW_FOCUSED
  4. 以编程方式将注意力集中在按钮2上

在辅助功能模式下,我无法准确识别向右滑动的手势。

0 个答案:

没有答案