2010-12-08 13 views
1

Ich wiederhole einen Beitrag, den ich bei der Android-Gruppe in Google-Gruppen gemacht habe (http://groups.google.com/group/android-developers/browse_thread/thread/78d0b7496a51e3b7#), hoffentlich werde ich hier etwas Glück haben!immer Dialog in Landschaft

Ich habe eine Aktivität, die eine Liste von Elementen anzeigt. Beim Klicken auf ein Element, Ich zeige einen Vollbild-Dialog mit einigen Schaltflächen und einem Bild. Diese sieht gut aus in der Landschaft, sieht aber im Hochformat nicht gut aus (Aufgrund das Bildseitenverhältnis). Ich würde gerne wissen, ob es möglich ist, diesen Dialog immer in im Querformat anzuzeigen, unabhängig von der aktuellen Bildschirm Ausrichtung. Und nachdem der Dialog geschlossen wurde, übergebe ich die Ausrichtung zurück zum Sensor. Hier ist, was ich bisher:

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); 
           } 
         }); 
       } 
     }; 

Aber so zu tun, wird der Bildschirm ändert Orientierung und dann versucht den Dialog angezeigt werden soll. Aber bei Orientierungsänderung ist der Bildschirm Neustart der Aktivität und mein Dialog wird nicht angezeigt. Gibt es eine einfachere Möglichkeit, dies zu tun? ? Kann ich zwei verschiedene Layouts für den Dialog verwenden und je nach Ausrichtung einen entsprechenden laden? Wenn ja, wie würde das XML für den Portrait-Modus aussehen? Danke!

Antwort

1

Wenn Sie ein benutzerdefiniertes Layout für den Dialog verwenden, erstellen Sie einfach einen neuen und legen Sie ihn im Layoutland-Ordner ab (erstellen Sie ihn bei Bedarf). Auf diese Weise wird automatisch der entsprechende geladen.

+0

Vielleicht habe ich nicht klar erklärt. Wenn der Benutzer auf ein Element klickt, möchte ich, dass das Dialogfeld im Vollbildmodus im Querformat geöffnet wird, wenn die aktuelle Ausrichtung Hochformat ist. Wie lade ich das Dialogfeld auf diese Weise? Da die Länge meines Bildes immer größer ist als seine Höhe, wird beim Laden des Dialogs im Hochformat viel freier Platz über und unter dem Bild erzeugt. – WanderingWizard

+1

Ich würde einen Weg finden, um es in beiden Layout arbeiten, aber wenn Sie tun wollen, was Sie tun möchten, verwenden Sie eine statische boolesche Variable, die während onCreate ausgewertet wird, und abhängig von seinem Wert wird das Dialogfeld ausgelöst. Auf diese Weise funktioniert der Code, den Sie haben, obwohl die Aktivität neu erstellt wird. – blindstuff

Verwandte Themen