首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >片段对话框中的沉浸式模式

片段对话框中的沉浸式模式
EN

Stack Overflow用户
提问于 2015-07-15 21:31:45
回答 2查看 792关注 0票数 0

如何在显示片段对话框时保持沉浸式模式。我已经创建了一个继承自对话框片段但不工作的类。

EN

回答 2

Stack Overflow用户

发布于 2020-01-13 20:38:38

在对话框或BottomSheetDialogFragment中,你必须实现这个解决方案,这是我的工作。

步骤1:

在对话框或BottomSheetDialog中,用onActivityCreated方法编写以下代码,

代码语言:javascript
复制
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:另外,覆盖下面的方法:

代码语言:javascript
复制
override fun setupDialog(dialog: Dialog, style: Int) {

 super.setupDialog(dialog, style)
    dialog?.window?.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)

}

现在看看它的魔力:)

票数 0
EN

Stack Overflow用户

发布于 2015-07-15 21:31:45

在onCreateDialog上覆盖。

代码语言:javascript
复制
@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中的这篇文章

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31431851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档