如何在显示片段对话框时保持沉浸式模式。我已经创建了一个继承自对话框片段但不工作的类。
发布于 2020-01-13 20:38:38
在对话框或BottomSheetDialogFragment中,你必须实现这个解决方案,这是我的工作。
步骤1:
在对话框或BottomSheetDialog中,用onActivityCreated方法编写以下代码,
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
var viewParent = view
while (viewParent is View) {
viewParent.fitsSystemWindows = false
viewParent.setOnApplyWindowInsetsListener { _, insets -> insets }
viewParent = viewParent.parent as View?
}
}步骤2:另外,覆盖下面的方法:
override fun setupDialog(dialog: Dialog, style: Int) {
super.setupDialog(dialog, style)
dialog?.window?.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)
}现在看看它的魔力:)
发布于 2015-07-15 21:31:45
在onCreateDialog上覆盖。
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
final Dialog dialog = new Dialog(getActivity());
dialog.setCanceledOnTouchOutside(false);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
dialog.getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
dialog.setContentView(root);
dialog.getWindow().setLayout(500, 500);
return dialog;
}我做了固定尺寸的。请参阅http://vardhan-justlikethat.blogspot.com/2014/06/android-immersive-mode-for-dialog.html中的这篇文章
https://stackoverflow.com/questions/31431851
复制相似问题