3

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

出于某种原因,这会导致 ActionBar 位于辅助功能焦点列表的末尾,即使它首先出现在页面上,并且似乎具有更高的“z-index”(它绘制在 TextView 的顶部)。

我创建了一个示例 testapp(见截图),当我让 TalkBack “从顶部读取”时,它以“Hello World,Hello World,Hello World,Hello World”而不是“Action Bar Order”开头。操作栏在顶部与 TextView 重叠的屏幕截图

测试项目是一个简单的 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>

字符串.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 低,但这也无济于事。

4

1 回答 1

2

因为我已经用尽了我的选择,而且@alanv(他肯定知道他关于 android 可访问性的知识)确认没有好的应用程序端解决方法,所以我最终在可访问性模式下将 Theme 更改为 use <item name="android:windowActionBarOverlay">false</item>。这显然还有其他复杂性 - 最明显的是屏幕空间较小,但这是我能做的最好的。

于 2014-07-30T13:17:31.983 回答