Android:无法在屏幕上准确设置对话框的位置

时间:2018-11-11 19:18:31

标签: android dialogfragment

我想像某些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
}

0 个答案:

没有答案