2012-04-19 4 views
0

にレイアウトを追加する方法:このクラスは働いていたどのように私はかなり理解していなかっ私はチュートリアルからコピーした私のゲーム内のクラス持つこの

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.addView(my_child_layout)をやってみましたが、addViewはpt内では定義されていません。 PanelThingを変更することは可能でしょうか?おそらく、 "extends"や "implements"を使ってaddViewを定義するのですか?または、ptにレイアウトを追加できる他の方法がありますか?

編集: ptの子レイアウトが必要な理由を正確に知りたい場合は、this questionを参照してください。

答えて

1

SurfaceViewは、LinearLayoutのようなレイアウトコンテナではないため、ビューを追加することはできません。これは、コード内に常に描画するインタラクティブなイメージのようなものです。

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> 
1

よくSurfaceViewに子要素を持つことはできません。 1つの可能な解決策は、何かのようにすることです。

<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を見ることができます。

関連する問題