我想在特定视图上显示一个弹出窗口,我通过以下函数实现了这一点。它适用于大多数设备。某些设备,例如 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
这两个代码都不适用于某些设备,我在这里缺少什么?