我在游戏中有一个课程,我从教程中复制了一个课程:
public class PanelThing extends SurfaceView implements SurfaceHolder.Callback
{
}
我从来没有完全理解这个课程是如何工作的,但它似乎完成了这项工作,而且我的游戏一直运作良好。这个PanelThing似乎有点像某种布局。在我的游戏onCreate方法中,我有:
pt = new PanelThing(this);
game_play_layout = new LinearLayout(this);
game_play_layout.addView(pt);
setContentView(game_play_layout);
现在我需要在pt中有一个子布局。我尝试了pt.addView(my_child_layout)
,但是在pt中未定义addView。是否可以使用“extends”或“implements”修改PanelThing,以便定义addView?或者是否有其他方法可以为pt添加布局?
编辑:如果您想确切了解我为什么需要pt的子布局,请参阅this question。
答案 0 :(得分:1)
您在SurfaceView中无法拥有子元素。一种可能的解决方案是做类似的事情。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<PanelThing
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout android:visibility="GONE">
</LinearLayout>
</RelativeLayout>
您可以将横幅添加到LinearLayout,可以将其放置在您喜欢的任何位置。希望此解决方案有所帮您可以看到this thread获得一些帮助。
答案 1 :(得分:1)
SurfaceView
不是LinearLayout
之类的布局容器,因此您无法为其添加视图。它更像是您一直在代码中绘制的交互式图像。
您必须将要显示的其他信息添加到SurfaceView
的绘图代码中,或者您可以使用SurfaceView
将其排列在FrameLayout
的顶部。确保顶部的布局在您不想阻止下面内容的区域中是透明的。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<PanelThing
android:layout_width="match_parent"
android:layout_height="match_parent" />
< -- Layout on top here. --
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>