2013-09-07 11 views
3

Мне нужно, чтобы показать DialogFragment поверх существующей нормальной Activity (не полноэкранном режиме и с ActionBar видимым).
Моих DialogFragment потребности быть в полноэкранном режиме, поэтому я использую следующие строки для достижения этого результата:различия в поведении между ICS и Jelly Bean при использовании окна FLAG_FULLSCREEN

getDialog().getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN); 
getDialog().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR); 

На ICS все работает нормально, мой DialogFragment показан в полноэкранном режиме и, когда я закрываю это мое Activity содержания не были изменены, так что нет глюков в плане (как это должно быть, так как флаг полноэкранного режима, который я устанавливаю, должен влиять только на окно, в котором находится DialogFragment).

На Jelly Bean вместо этого, когда я закрываю свой DialogFragment Я вижу, что содержимое моего Activity было изменено, чтобы покрыть также панель состояния, и поэтому при попытке вернуться к исходному размеру происходит сбой макета.
Я думаю, что это может быть связано с введением новых флагов интерфейса UI (SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN и т. Д.), Но я не мог понять, как иметь такое же поведение ICS также на Jelly Bean ... Любая идея?

ответ

2

Нашли обходной путь, вам необходимо позвонить:

view.setFitsSystemWindows(true); 

перед установкой полноэкранное флаг в окно, и таким же образом:

view.setFitsSystemWindows(false); 

перед очисткой.

view должен быть вид внутри вашего Activity (не ваш DialogFragment!), И он должен быть виден (см setSystemUiVisibility(SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) does not work)

Тем не менее, есть некоторые глюки, когда оживляющий отклонять от DialogFragment что нет на ICS ... Но я думаю, что это еще одна проблема ...