我有一个使用<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更低的位置,但这也无济于事。
答案 0 :(得分:2)
因为我已经用尽了我的选择,而且@alanv(他肯定知道他关于android可访问性的东西)确认没有好的应用程序端解决方法,我最终在辅助功能模式下更改主题以使用{{1} }。这显然有其他复杂性 - 最明显的是屏幕占用空间较少,但它是我能做的最好的。