2010-08-21 8 views
0

Je veux ajouter une nouvelle vue à ma scène qui contiendra du contenu qui changera par programme tout au long de mon application. Quand il change, il doit apparaître sur l'écran pendant 3 secondes (ou un clic) puis disparaître.pop-up type view (z-index?) - android

Cette vue changera de taille en fonction de son contenu WRAP_CONTENT, mais idéalement, j'aimerais qu'elle soit centrée horizontalement et verticalement sur l'écran.

Je suis coincé sur trois parties: 1) quel type de vue dois-je utiliser pour cela ... Je pensais relatif, mais tout mon jeu avec lui n'a donné aucun bon résultat pour ce que j'essaie 2) par rapport à # 1 (en essayant la vue relative), je ne pouvais pas le centrer correctement (essayé en utilisant param.leftMargin et param.topMargin avec des valeurs variables mais je ne pouvais pas le faire fonctionner sur différents appareils avec différentes résolutions 3) également par rapport à # 1, je ne pouvais pas faire ce flottant sur tout le reste sur mon écran (besoin d'un quelque chose comme un z-index ou similaire).

des idées, des exemples de code serait merveilleux.

TIA

Répondre

0

Utilisez une boîte de dialogue personnalisée, à savoir un LinearLayout avec android:theme="@android:style/Theme.Dialog" et pour la classe, ce serait quelque chose comme

public class YourCustomDialog extends Dialog implements DialogInterface 

où vous pouvez vous mettre en œuvre une logique personnalisée de ce qu'il faut afficher. Cette boîte de dialogue est flottante et modale au-dessus de toutes les autres vues et vous pouvez également définir l'arrière-plan floue, etc.

Ceci est un constructeur typique de mon dialogue personnalisé - la mise en page serait définie dans un fichier de mise en page xml , qui dans mon cas est my_custom_dialog.xml:

public MyCustomDialog(Context context) { 
    super(context, android.R.style.Theme); 

    Window window = getWindow(); 
    window.requestFeature(Window.FEATURE_NO_TITLE); 
    window.setGravity(Gravity.BOTTOM); 
    window.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.empty)); 

    setContentView(R.layout.my_custom_dialog); 

    // actually not necessary as it's already the default value: 
    window.setLayout(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 

    ... 
} 
+0

merci pour la réponse rapide. Ce sera ma première étape à la création d'un dialogue personnalisé. Je vais chercher des ressources sur la façon de le faire. Pour me lancer, pouvez-vous me dire, dois-je inclure de nouveaux fichiers dans le dossier res ou sous-dossiers ou simplement créer cette classe dans src? – Kyle

+0

Vous définissez une mise en page pour la boîte de dialogue elle-même dans un fichier de mise en page XML distinct. Ensuite, vous utilisez setContentView pour l'assigner à la boîte de dialogue, voir l'exemple de code ajouté ci-dessus. –

+0

ok c'est un bon début. dois-je inclure android: theme = "@ android: style/Theme.Dialog" dans ce fichier de mise en page personnalisé ou est-ce que cela va dans le fichier main.xml (dans une nouvelle disposition linéaire)? – Kyle