import android.app.Activity import android.app.Dialog import android.graphics.Color import android.os.Build import android.view.Display import android.view.Window import android.view.WindowInsets import android.view.WindowManager class MyDialog(context: Activity) : Dialog(context) { private val activityContext:Activity= context private fun initView() { //获取display val display: Display = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { context.display!! } else { activityContext.windowManager.defaultDisplay } //Android R后设置全屏的方式变了 if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.R) { //全屏 window!!.insetsController?.hide(WindowInsets.Type.statusBars()) //保留状态栏 window!!.insetsController?.hide(WindowInsets.Type.navigationBars()) }else{ window!!.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN) } //设置LayoutParams window!!.setLayout(WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.MATCH_PARENT) //设置attribute val attributes = window?.attributes!! attributes.flags=WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL window!!.attributes = attributes //设置高宽及padding window!!.decorView.minimumHeight=display.mode.physicalHeight window!!.decorView.minimumWidth=display.mode.physicalWidth //如果未设置背景颜色或设置在padding之后,则无法全屏,这里设置的透明底 window!!.decorView.setBackgroundColor(Color.parseColor("#10000000")) window!!.decorView.setPadding(0,0,0,0) } override fun show() { //在展示前设置参数 initView() super.show() } }