2012-04-19 3 views
0

J'ai une classe dans mon jeu que je copiais d'un tutoriel:Comment ajouter une mise en page à ce

public class PanelThing extends SurfaceView implements SurfaceHolder.Callback 
{ 
} 

Je ne ai jamais tout à fait compris comment cette classe a travaillé, mais il semble faire le travail et mon jeu a fonctionné très bien pendant un certain temps. Ce PanelThing semble fonctionner un peu comme une sorte de Layout. Dans la méthode onCreate de mon jeu, j'ai:

Maintenant, j'ai besoin d'une disposition enfant dans pt. J'ai essayé de faire pt.addView(my_child_layout), mais addView n'est pas défini dans pt. Est-il possible de modifier PanelThing, peut-être avec "extends" ou "implements" de sorte que addView est défini? Ou y a-t-il une autre façon d'ajouter une mise en page à pt?

EDIT: Si vous voulez savoir exactement pourquoi je veux une disposition enfant pour pt, voir this question.

Répondre

1

un SurfaceView n'est pas un conteneur de disposition tel que LinearLayout, vous ne pouvez donc pas ajouter de vues. C'est plus comme une image interactive que vous dessinez dans votre code tout le temps.

Vous devrez soit ajouter les informations supplémentaires que vous souhaitez afficher au code de dessin de votre SurfaceView ou vous pouvez le mettre en forme sur votre SurfaceView en utilisant un FrameLayout. Assurez-vous que la disposition sur le dessus est transparente dans les régions que vous ne voulez pas bloquer le contenu ci-dessous.

<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

Eh bien, vous ne pouvez pas avoir d'éléments enfants dans SurfaceView. Une solution possible peut être de faire quelque chose comme.

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

Et vous pouvez ajouter votre bannière à la LinearLayout qui peut être placé où vous le souhaitez. espérons que cette solution aide. Vous pouvez voir this thread pour de l'aide.

Questions connexes