如何为此添加布局

时间:2012-04-19 13:35:30

标签: java android eclipse

我在游戏中有一个课程,我从教程中复制了一个课程:

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

2 个答案:

答案 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>