0

我想在特定视图上显示一个弹出窗口,我通过以下函数实现了这一点。它适用于大多数设备。某些设备,例如 Realme 3 Pro 设备。Y 位置不准确。

下面的代码用于获取屏幕的高度。

    val size = Point()
    val height = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
        windowManager.currentWindowMetrics.bounds.height()
    } else {
        windowManager.defaultDisplay.getSize(size)
        size.y
    }

然后在下面我曾经在 footerView 顶部显示弹出窗口

        val lp: WindowManager.LayoutParams = window!!.attributes
        lp.width = WindowManager.LayoutParams.MATCH_PARENT
        lp.height = WindowManager.LayoutParams.WRAP_CONTENT
        lp.gravity = Gravity.BOTTOM
        val rectf = Rect()
        footerView.getGlobalVisibleRect(rectf)
        val y = rectf.centerY()
        lp.y = height - y
        lp.dimAmount = 0f

另一个场景试图在该特定视图下方显示弹出窗口到该视图下方的剩余屏幕

        val lp: WindowManager.LayoutParams = window!!.attributes
        lp.width = WindowManager.LayoutParams.MATCH_PARENT
        val rectf = Rect()
        footerView.getGlobalVisibleRect(rectf)
        lp.height = height  - rectf.centerY()
        lp.gravity = Gravity.BOTTOM
        lp.y = 0
        lp.dimAmount = 0f

这两个代码都不适用于某些设备,我在这里缺少什么?

4

0 回答 0