1

У меня есть полноэкранный диалог DialogFragment. все прошло хорошо, пока я не тестировал свое приложение с новой версией Android Nougat (7). внезапно я заметил, что странные поля появляются в верхней и нижней части экрана.DialogFragment в Nougat 7 имеет странное поведение в полноэкранном режиме

Родительский макет ConstraintLayout, но даже если я попытался изменить его на LinearLayout или RelativLayout, ничего не получилось.

У меня есть это строки кода:

getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); 
getDialog().getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
getDialog().getWindow().setLayout(getScreenWidth(), getScreenHeight()); 

и это скриншот: Screenshot

любая идея?

+0

Здравствуйте, MorH. Я столкнулся с аналогичной проблемой. Не могли бы вы сообщить мне, какое исправление применимо, чтобы заставить его работать? Спасибо – Nilesh

+0

привет, извините за задержку, но я все равно отправлю его всем. – morH

ответ

0

Мое решение этой проблемы состояло в том, чтобы добавить диалоговое окно «Диалог» как «Фрагмент» вместо диалога.

Я удалил:

dialog.show(fm, MyDialog.class.getSimpleName()); 

и добавил этот код вместо:

 FragmentTransaction transaction = iFm.beginTransaction(); 
     transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
     ViewGroup root = (ViewGroup) iActivity.findViewById(android.R.id.content).getRootView(); 
     FrameLayout child = new FrameLayout(iActivity); 
     child.setLayoutParams(new ViewGroup.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)); 
     child.setId(R.id.dialog_container); 
     root.addView(child); 
     transaction.add(child.getId(), iDialog).addToBackStack(iDialog.getClass().getSimpleName()).commit(); 

Я добавил DialogFragment прежде всего контента, как диалог, но с простой операции фрагмент. Это был единственный обходной путь, который я мог бы придумать, и он отлично работает до сих пор, как шарм :)