2

目前,当我在 0,0 处绘制时,状态栏会覆盖绘图。有没有办法调整表面的位置,或者我是否需要建立一个绘制偏移来考虑状态栏 - 有效地绘制从 y=25 开始的所有内容?

4

4 回答 4

2

我不确定为什么surfaceview与状态栏重叠(听起来像一个android bug),但最简单的方法可能是用来glViewport定义你打算用于绘图的surfaceview的哪个区域。

如果你能弄清楚状态栏有多高,那么只需从你的 glViewport 调用的高度中减去它,然后你的所有调用将被映射到视口范围内。

于 2012-08-20T23:34:44.497 回答
2

当我遇到这个问题时,我在 Surface 顶部有一个虚拟 View(我使用 FrameLayout 做到了),它与 ContentView 一样大。所以我只需要打电话 View.getLocationOnScreen(int[])知道我应该从哪里开始画画。

于 2012-08-21T01:11:45.010 回答
1

您可能需要告诉 android 用于您的活动的主题/样式。

在您的 AndroidManifest.xml 中为创建 glSurfaceView 的活动包含以下内容:

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

或者,如果您想保留状态栏:

android:theme="@android:style/Theme.Black.NoTitleBar"

这里有更多关于主题和风格的信息:http: //developer.android.com/guide/topics/ui/themes.html

编辑: 这样 android 将(应该)在创建 glSurfaceView 时考虑请求的布局,因此不需要任何偏移量......

于 2012-08-22T15:29:31.640 回答
0
window.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
于 2019-06-04T08:18:56.280 回答