繁体   English   中英

在 Android 中显示弹出菜单后,如何仍显示全屏?

[英]How can I still display a full screen after a popup menu displyed in Android?

当我运行Code A时,应用程序显示为全屏,您可以看到Image 1

我点击button1后,显示一个弹出菜单,但全屏消失! 你可以看到图片 2

在 Android 中显示弹出菜单后,如何仍显示全屏?

代码 A

const val FLAGS_FULLSCREEN = View.SYSTEM_UI_FLAG_LOW_PROFILE or
        View.SYSTEM_UI_FLAG_FULLSCREEN or
        View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
        View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or
        View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
        View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

private const val IMMERSIVE_FLAG_TIMEOUT = 500L

class UIHome : AppCompatActivity() {

    private lateinit var mContext: Context
    private lateinit var container: ConstraintLayout

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.layout_home)
        container = findViewById(R.id.camera_ui_container)

        button1.setOnClickListener{
           v -> showPopup(v, this)
        }

    }

    override fun onResume() {
        super.onResume()
        container.postDelayed({
            container.systemUiVisibility = FLAGS_FULLSCREEN
        }, IMMERSIVE_FLAG_TIMEOUT)
    }


    private fun showPopup(v: View, mContext: Context) {
        val popup = PopupMenu(mContext, v)
        popup.inflate(R.menu.menu_popup_more)

        popup.setOnMenuItemClickListener {
            item -> handlePopupMenu(item, mContext)
        }
        popup.show()
    }

    private fun handlePopupMenu(item: MenuItem, mContext: Context): Boolean {
        when (item.itemId) {
            R.id.MenuMoreAbout->{
               openActivity<UIAbout>()
            }
        }
        return false
    }

}

布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/camera_ui_container"
        android:layout_width="match_parent"
        android:background="@android:color/black"
        android:layout_height="match_parent">

    <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/button1"
            android:text="Popup Menu"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"></Button>

</androidx.constraintlayout.widget.ConstraintLayout>

图 1

在此处输入图像描述

图 2

在此处输入图像描述

添加内容

致 Ankit:谢谢,您的代码有效,但 UI 仍然显示操作栏,您可以看到图 3

图 3

在此处输入图像描述

将此添加到 oncreate 以进行全屏活动

override fun onCreate(savedInstanceState: Bundle?) {
    this.requestWindowFeature(Window.FEATURE_NO_TITLE)
    window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN)
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
}

从 onWindowFocusChanged 调用 hideSystemUI 因为从 onresume 将不会生效。

override fun onWindowFocusChanged(hasFocus: Boolean) {
    super.onWindowFocusChanged(hasFocus)
    hideSystemUI()
}    


 private fun hideSystemUI() {
    // Enables regular immersive mode.
    // For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
    // Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY
    window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE
            // Set the content to appear under the system bars so that the
            // content doesn't resize when the system bars hide and show.
            or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            // Hide the nav bar and status bar
            or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            or View.SYSTEM_UI_FLAG_FULLSCREEN)
}

您也可以查看此文档https://developer.android.com/training/system-ui/immersive.html#kotlin

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM