Android面试题之DialogFragment中隐藏导航栏

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点

在 Android 中,使用 DialogFragment 显示对话框时,如果您希望隐藏系统导航栏(如状态栏和导航键),可以通过设置相关的系统 UI 标志来实现。这需要在 DialogFragment 的视图创建和显示过程中配置窗口属性。

以下是一个完整的例子,展示了如何在 DialogFragment 中隐藏系统导航栏(使用 Kotlin):

import android.os.Bundle
import android.view.View
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment

class MyDialogFragment : DialogFragment() {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val view = inflater.inflate(R.layout.fragment_my_dialog, container, false)
        return view
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        dialog?.window?.decorView?.systemUiVisibility = (
                View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                        or View.SYSTEM_UI_FLAG_FULLSCREEN)
    }

    override fun onStart() {
        super.onStart()
        dialog?.window?.setLayout(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT
        )
    }
}

在这个示例中:

  1. onCreateView: 从 XML 中膨胀 DialogFragment 布局。
  2. onViewCreated: 在视图创建后设置系统 UI 可见性标志,隐藏导航栏和状态栏。
  3. onStart: 设置对话框窗口的布局参数,使其覆盖整个屏幕。

XML 布局文件

确保你有一个对应的布局文件,例如 res/layout/fragment_my_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Your layout content goes here -->

</FrameLayout>

使用 DialogFragment

要显示这个 DialogFragment,可以在活动或其他片段中调用以下代码:

val dialogFragment = MyDialogFragment()
dialogFragment.show(supportFragmentManager, "MyDialogFragmentTag")

小结

通过在 DialogFragmentonViewCreated 方法中设置系统 UI 的可见性标志,可以实现隐藏系统导航栏的效果。这种方法允许您的 DialogFragment 在显示时全屏,并隐藏状态栏和导航栏。


欢迎关注我的公众号AntDream查看更多精彩文章!

AntDream

相关推荐

  1. android11-隐藏状态栏和导航

    2024-07-16 11:12:04       39 阅读
  2. android 9 Systemui 动态隐藏导航

    2024-07-16 11:12:04       53 阅读
  3. Android 底部导航实现

    2024-07-16 11:12:04       17 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 11:12:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 11:12:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 11:12:04       58 阅读
  4. Python语言-面向对象

    2024-07-16 11:12:04       69 阅读

热门阅读

  1. 扫地机器人自动回充功能

    2024-07-16 11:12:04       21 阅读
  2. 优秀代码分享

    2024-07-16 11:12:04       22 阅读
  3. 题解-运动会

    2024-07-16 11:12:04       22 阅读
  4. DangerWind-RPC-framework---五、服务端的反射调用

    2024-07-16 11:12:04       24 阅读
  5. LeetCode 162. 寻找峰值

    2024-07-16 11:12:04       23 阅读
  6. 来聊聊Socket,WebSocket和MQTT的区别

    2024-07-16 11:12:04       22 阅读