我想像某些PopupMenu一样,将Dialog相对于某些View的位置定位。但是,我遇到了一个问题,即对话框始终相对于所需位置以一定的偏移显示。显然,在设置位置时,会考虑对话框阴影的大小,这不适合我。如何找到阴影的确切大小(以调整要设置的坐标),或者以其他方式设置对话框的确切位置?
val anchorPosition = IntArray(2)
anchorView.getLocationOnScreen(anchorPosition)
dialog.window?.attributes?.let { attrs ->
attrs.x = anchorPosition[0] + anchorView.width
if (anchorPosition[1] > anchorView.rootView.height / 2) {
dialog.window?.setGravity(Gravity.BOTTOM or Gravity.END)
attrs.y = anchorPosition[1]
} else {
dialog.window?.setGravity(Gravity.TOP or Gravity.END)
attrs.y = anchorPosition[1] + anchorView.height
}
dialog.window?.attributes = attrs
}