Я повторяю сообщение, которое я сделал в группе 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 для портретного режима?Спасибо!