всегда просматривать диалог в альбомной ориентации - PullRequest
1 голос
/ 08 декабря 2010

Я повторяю сообщение, которое я сделал в группе Android в группах Google (http://groups.google.com/group/android-developers/browse_thread/thread/78d0b7496a51e3b7#), надеюсь, мне здесь повезет!

У меня есть действие, отображающеесписок предметов.При нажатии на элемент я отображаю полноэкранный диалог с некоторыми кнопками и изображением.Это отлично смотрится в ландшафте, но не выглядит хорошо в портретной (из-за соотношения сторон изображения).Я хотел бы знать, возможно ли всегда отображать этот диалог в альбомной ориентации независимо от текущей ориентации экрана.И после закрытия диалогового окна я передам ориентацию обратно к датчику.Вот что у меня получилось:

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

Но при этом экран сначала меняет ориентацию, а затем пытается отобразить диалоговое окно.Но при изменении ориентации экран перезапускает действие, и мой диалог не отображается.Есть ли более простой способ сделать это?Могу ли я использовать два разных макета для диалога и загрузить соответствующий в зависимости от ориентации?Если так, то как будет выглядеть XML для портретного режима?Спасибо!

1 Ответ

1 голос
/ 08 декабря 2010

Если вы используете собственный макет для диалогового окна, просто спроектируйте новый и поместите его в папку layout-land (создайте его при необходимости), чтобы он автоматически загрузил соответствующий.

...