Chromebook上的Android应用无法使用查看/获取用户事件

问题描述 投票:0回答:1

我使用Delphi创建多平台应用。它适用于Android。在Chromebook上更新Chrome OS后不久,它开始出现故障。Delphi使用自己的Windows处理。

最初是mNativeContentView.getViewTreeObserver()。addOnGlobalLayoutListener(this);在NativeActivity中给出了一些空指针异常。

经过一些调整后,我得到了用Delphi制作的用户界面,但是它不响应用户的任何点击/触摸。我有一个带有计时器的时钟,所以我可以看到该应用程序仍在运行中,只是无法“单击”。

https://developer.android.com/topic/arc/input-compatibility上,我发现提到了Android和Chromebook的区别:

在自由格式的窗口模式下,应用程序的标题栏是视图层次结构的一部分,处于您的控制之下。您通常不必意识到这一点,但是在某些情况下,您必须要小心:

请不要摆弄Window.getDecorView()。如果要添加顶级视图,请将它们添加到已设置为Activity.setContentView()的视图中。

Delphi正在使用window.getDecorView。

[如果查看Android来源,我会看到NativeActivity:setContentView(mNativeContentView);

mNativeContentView是私有成员。

所以这给了我一些问题:

1)这是否意味着根本没有办法尝试用mNativeContentView替换window.getDecorView? 我可以通过某种方式访问​​mNativeContentView吗?

2)是否有另一种方法可以使其作为顶部窗口来获取Chromebook上的鼠标/触摸事件?

3)在日志中,我可以看到: SurfaceFlinger:重复的图层名称:更改SurfaceView ... 重复的图层名称:更改-SurfaceView的背景-...

 This does not occur on real Android tablet obly on Chromebook.

这只是无害的警告还是表明错误?

java android delphi view chromebook
1个回答
0
投票

通过覆盖派生的NativeActivity类中的dispatchTouchEvent来解决。如果正常的Activity.dispatchTouchEvent无法处理,则为顶视图添加显式的dispatchTouchEvent。

© www.soinside.com 2019 - 2024. All rights reserved.