3

我设计了一个菜单,其中包含几个不同 LinearLayouts 中的几个按钮,所有这些按钮都放置在 FrameLayout 内的动画 GLSurfaceView 上。当用户点击界面中的一个按钮时,我GONE在进行下一个布局之前将当前布局的可见性设置为VISIBLE当用户选择一个关卡时,游戏开始并且所有布局都是GONE(除了屏幕右侧的控制栏,但这不包含在 FrameLayout 中)

在大多数手机上,菜单就像一个魅力,但我在 Xperia Ray 上做了一个快速测试,却发现我无法去任何地方,因为按钮不会点击。我Log.d在大多数 onClick 侦听器中都设置了标签,在这种情况下,它们没有显示在 Logcat 中,因此侦听器似乎根本没有触发。我还注意到 GLSurfaceView 没有从它自己的 TouchEventListener 中返回任何内容。即使在顶部菜单中通过点击 GLSurfaceView 触发的功能被禁用,我通常仍然会在 Logcat 中收到一条消息。

我认为这可能与我使用 FrameLayout 的方式有关。文档说它应该只有一个孩子,但我在 android 开发人员上阅读的另一篇文章通过在 FrameLayout 内的 ImageViews 上显示文本来演示字幕图像。

最后一点,我还要说我已经在模拟器中进行了测试,我发现 android v2.3 和 android v4 都显示了与 ray 相同的行为。目前,除了可以完美运行我的应用程序的 android v2.2 之外,这些是我唯一确定的。我对是否相信模拟器上的测试结果犹豫不决。

我个人很难过,因为没有错误消息可以继续,但是有人可以提出解决方案吗?

4

1 回答 1

2

我找到了解决方案。

原来,我的布局中有一个流浪者ScrollView,它在 z 顺序中位于我的根布局之上,并且默认情况下可见。我没有切换这个视图的可见性,而是为了它的子布局。哎呀。

在我测试过的大多数设备上,流浪ScrollView并没有影响我的应用程序的功能,可能是因为空布局允许点击它后面的按钮。然而事实证明,某些设备,例如 Xperia Ray,对点击是否可以通过布局传递(可能是性能决定)更加严格。

The ScrollView was a required part of the layout so I couldn't just remove it. Instead I gave the the android:visibilty attribute to the ScrollView so that it would be GONE until it is needed by the interface and it won't block the user from clicking buttons.

于 2012-06-23T22:16:20.247 回答