2010-12-08 47 views
1

je répète un poste que je l'ai fait au groupe android en groupe Google (http://groups.google.com/group/android-developers/browse_thread/thread/78d0b7496a51e3b7#), je espérons avoir un peu de chance ici!voir toujours dialogue dans le paysage

J'ai une activité affichant une liste d'éléments. En cliquant sur un élément, j'affiche une boîte de dialogue en plein écran avec quelques boutons et une image. Ce ressemble beaucoup dans le paysage, mais ne semble pas bon en mode portrait (En raison de le rapport d'aspect de l'image). Je voudrais savoir s'il est possible de toujours afficher cette boîte de dialogue dans le paysage, quel que soit l'écran en cours d'orientation . Et après le rejet de la boîte de dialogue, je vais retourner l'orientation au capteur. Voici ce que j'ai jusqu'à présent:

OnItemClickListener listlistener = new OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView parent, View arg1, int position, 
           long arg3) { 
         final Dialog dialog = new Dialog(getParent()); 
         dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
         final int orientation = 
getResources().getConfiguration().orientation; 
         if (orientation == 1){ 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
         } 
         dialog.setContentView(R.layout.dialog); 
         dialog.setCancelable(true); 
         ImageView img = (ImageView) dialog.findViewById(R.id.img); //A 
static image for testing UI 
         //BUTTON LISTENERS HERE 
         dialog.show(); 
         dialog.setOnCancelListener(new OnCancelListener() { 
           @Override 
           public void onCancel(DialogInterface dialog) { 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); 
           } 
         }); 
       } 
     }; 

Mais en le faisant, l'écran change première orientation et tente ensuite pour afficher la boîte de dialogue. Mais lors d'un changement d'orientation, l'écran redémarre l'activité et ma boîte de dialogue n'apparaît pas. Existe-t-il un moyen plus simple de le faire? Puis-je utiliser deux dispositions différentes pour la boîte de dialogue et charger un correspondant en fonction de l'orientation? Si oui, alors à quoi ressemblerait le XML pour le mode portrait? Merci!

Répondre

1

Si vous utilisez une disposition personnalisée pour la boîte de dialogue, créez-en une nouvelle et placez-la dans le dossier layout-land (créez-la si nécessaire), de cette façon elle chargera automatiquement la correspondante.

+0

Peut-être que je n'ai pas expliqué clairement. Lorsque l'utilisateur clique sur un élément, je veux que la boîte de dialogue s'ouvre en mode plein écran en mode paysage si l'orientation actuelle est portrait. Comment charger la boîte de dialogue de cette façon? Comme la longueur de mon image est toujours supérieure à sa hauteur, le chargement du dialogue en mode portrait crée beaucoup d'espace vide au-dessus et en dessous de l'image. – WanderingWizard

+1

Je trouverais un moyen de le faire fonctionner dans les deux disposition, cependant, si vous voulez faire ce que vous voulez faire, utilisez une variable booléenne statique, qui est évaluée pendant onCreate, et en fonction de sa valeur, elle ouvre la boîte de dialogue. De cette façon, le code que vous avez fonctionnera, même si l'activité est recréée. – blindstuff