android - 将 SurfaceView 与其他 View (如 TextView 和 Buttons)组合

标签 android android-layout layout opengl-es surfaceview

我是 android 编程的新手(刚刚做了一些教程/阅读了开发指南等),作为每个新手我都想做一个无用的游戏:-)。

目前我正在为不同 View 的布局而苦恼。与示例类似,我创建了一个扩展 SurfaceView 并将其放入 FrameLayout 的类。在这个 SurfaceView 周围,我想要其他 View ,例如 ButtonsTextViews。 像这样:

-----------------------------------------------
| TextView | SurfaceView           | TextView |
|          |                       |          |
------------                       ------------
|          |                       | TextView |
|          |                       |          |
|          |                       ------------
|          |                       | TextView |
|          |                       |          |
|          |                       ------------
|          |                       |          |
|          |                       |          |
-----------------------------------------------
| Button                             Button   |
-----------------------------------------------

我已经设法用 FrameLayoutRelativeLayouts 做了类似的事情(将 TextViews 粘在屏幕的边缘)但是我想更好地控制 SurfaceView 的大小,因为它应该是我将在其中绘制的对象的宽度和高度的倍数。我已经尝试将 layout_widthlayout_height 设置为一些 dp 值,但是当我以 0,0 开始绘画时,它仍然位于最左上角( TextView 是..)。

那么,实现上述布局的最佳做法是什么?使用什么布局?或者我应该更好地在 SurfaceViewdraw() 函数中绘制文本?

最佳答案

布局是将 OpengGL 内容与按钮、标签和其他类型的 View 对象结合起来的正确方式。您可以在其他布局中组合布局...因此您可以逐步组合线性布局或任何您喜欢的布局来构建您的屏幕。

例如,您可以使用相对布局来设置按钮(b1、b2)和屏幕的其余部分:

+-----------+
|  Zone 1   |
+-----+-----+
| b1  | b2  |
+-----+-----+

然后在区域 1 中,您可以对 3 个主要列使用水平线性布局

+----+----+----+
| c1 | c2 | c3 |
+----+----+----+

在c2中你可以放置SurfaceView,在c1中放置文本标签

在 c3 中将有一个新的垂直线性布局来显示文本标签。

+----+
| t1 |
+----+
| t2 |
+----+
| t3 |
+----+

关于android - 将 SurfaceView 与其他 View (如 TextView 和 Buttons)组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4027388/

相关文章:

java - 变量的值与分配的值不同

android - 异步任务无法正常工作

android - LinearLayout 使用半屏

android - 布局旋钮和按钮 View

CSS:两列布局,每列颜色不同 - 需要流体高度

javascript - 使用 jQuery 使 DIV 在屏幕上居中

Android:微调器文本向右对齐但不居中

java - 如何在 firebase 中获取所有 child 的数据并将其显示到我的 Android 应用程序中?

java - Android Studio > GridLayout > 如何获取单元格的位置?

java - IllegalArgumentException 尝试使用 @style/Widget.MaterialComponents.TextInputLayout.OutlinedBox 时