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 内に子レイアウトが必要です。やってみpt.addView(my_child_layout)ましたが、pt内でaddViewが未定義です。addViewが定義されるように、おそらく「拡張」または「実装」を使用して、PanelThingを変更することは可能ですか? または、ptにレイアウトを追加できる他の方法はありますか?

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

4

2 に答える 2

1

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

表示する追加情報をの描画コードに追加するか、を使用してそのSurfaceView上にレイアウトすることができます。下のコンテンツをブロックしたくない領域では、上のレイアウトが透明であることを確認してください。SurfaceViewFrameLayout

<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>
于 2012-04-19T13:58:50.820 に答える
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 に追加して、好きな場所に配置できます。この解決策が役立つことを願っています。このスレッドを参照してください。

于 2012-04-19T13:46:13.683 に答える