0

我陷入了以下问题,需要您的帮助来解决它。任何指导将不胜感激。

场景:我在表面视图之上有一个覆盖视图,这个覆盖视图有几个图像和一个按钮。我已在此活动的清单文件中将“方向”标志设置为“横向”,并编写了一个方向侦听器来识别横向左侧和横向右侧方向。

问题:当我打开辅助功能模式并将内容描述正确设置为小部件时,在初始模式(无论是横向还是横向)下,当我按下任何图像时,我都能正确听到辅助功能对讲。当我将设备方向从左向右旋转时会出现问题,反之亦然,即使覆盖视图旋转正确,辅助功能控件也不会旋转。当我在“辅助功能”仍然打开的情况下以新方向触摸图标时,我没有听到 TalkBalk 文本。当我触摸在上一个方向模式下绘制的叠加层上的图像位置时,我会听到对讲文本。

看起来显示器/视图上的辅助功能区域已锁定,并且在从左到右旋转屏幕方向时不会随着覆盖视图的旋转而旋转。

知道为什么会发生这种情况以及纠正它的方法吗?是唯一打开销毁活动并再次创建它的吗?我不能破坏表面视图,因为它会影响用户体验。如何旋转与图像关联的辅助功能 TalkBack 文本以及屏幕旋转?

在这个问题上花了几天时间。通过旋转它尝试了视图旋转,但这不是问题,因为视图已经在旋转。请帮忙。

非常感谢您提前提供的帮助。

4

1 回答 1

0

我通过使用 Android 的本机功能而不是覆盖传感器方向处理程序并计算角度来确定左或右横向方向来解决此问题。只需在活动的 onCreate() 函数中使用以下代码

    if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
    }

使用此解决方案,您可以仅在横向模式下以及在向左和向右方向之间限制方向。那里的解决方案也适用于表面和覆盖层。

于 2014-08-26T18:28:56.860 回答