【问题标题】:Combining SurfaceView with other Views such as TextView and Buttons将 SurfaceView 与 TextView 和 Buttons 等其他 View 相结合
【发布时间】:2011-04-30 22:54:47
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 您应该发布您的 xml,以便人们更好地了解问题可能是什么。

标签: android android-layout layout opengl-es surfaceview


【解决方案1】:

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

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

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

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

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

在c2里面可以放置SurfaceView,在c1里面可以放置文字标签

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

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

【讨论】:

    猜你喜欢
    • 2016-12-12
    • 1970-01-01
    • 2017-03-27
    • 2016-05-03
    • 1970-01-01
    • 2014-08-13
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多