使用windowActionBarOverlay = true时,无法让ActionBar首先获取辅助功能焦点

时间:2014-07-21 19:31:36

标签: android android-actionbar accessibility android-styles talkback

我有一个使用<item name="android:windowActionBarOverlay">true</item>

的应用

由于某种原因,这会导致ActionBar位于Accessibility焦点列表的末尾,即使它首先出现在页面上,并且看起来具有更高的“z-index”(它在TextView上绘制) )。

我创建了一个示例testapp(参见屏幕截图),当我要求TalkBack“从顶部读取”时,它以“Hello World,Hello World,Hello World,Hello World”而不是“Action Bar Order”开头。{{ 0}}

测试项目是一个简单的1片段活动。我的xml文件位于下方,Activity是Android Studio向导的样板文件。

activity_my.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MyActivity"
    tools:ignore="MergeRootFrame" />

fragment_my.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MyActivity$PlaceholderFragment">

    <TextView
        android:text="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>

的strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Action Bar Order</string>
    <string name="hello_world">Hello world! \n Hello world! \n Hello World! \n Hello world!</string>
    <string name="action_settings">Settings</string>

</resources>

有谁能告诉我如何让ActionBar始终在这个场景中获得焦点?我试图添加marginTop以查看是否有帮助,使TextView实际出现在屏幕上比ActionBar更低的位置,但这也无济于事。

1 个答案:

答案 0 :(得分:2)

因为我已经用尽了我的选择,而且@alanv(他肯定知道他关于android可访问性的东西)确认没有好的应用程序端解决方法,我最终在辅助功能模式下更改主题以使用{{1} }。这显然有其他复杂性 - 最明显的是屏幕占用空间较少,但它是我能做的最好的。