Nougat 7 中的 DialogFragment 在全屏模式下有奇怪的行为
DialogFragment in Nougat 7 has strange behavior in full screen
我有一个全屏 DialogFragment。一切顺利,直到我使用新的 android Nougat (7) 版本测试了我的应用程序。突然我注意到屏幕的顶部和底部出现了奇怪的边距。
父布局是 ConstraintLayout,但即使我尝试将其更改为 LinearLayout 或 RelativLayout,也没有任何反应。
我有这样的代码行:
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
getDialog().getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getDialog().getWindow().setLayout(getScreenWidth(), getScreenHeight());
这是截图:
有什么想法吗?
我对这个问题的解决方案是将 'DialogFragment' 添加为 'Fragment' 而不是对话框。
我删除了:
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,但具有简单的片段事务。
那是我能想到的唯一解决方法,并且它像魅力一样工作得很好 :)
我有一个全屏 DialogFragment。一切顺利,直到我使用新的 android Nougat (7) 版本测试了我的应用程序。突然我注意到屏幕的顶部和底部出现了奇怪的边距。
父布局是 ConstraintLayout,但即使我尝试将其更改为 LinearLayout 或 RelativLayout,也没有任何反应。
我有这样的代码行:
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
getDialog().getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getDialog().getWindow().setLayout(getScreenWidth(), getScreenHeight());
这是截图:
有什么想法吗?
我对这个问题的解决方案是将 'DialogFragment' 添加为 'Fragment' 而不是对话框。
我删除了:
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,但具有简单的片段事务。 那是我能想到的唯一解决方法,并且它像魅力一样工作得很好 :)