Here's using the android-x solution, which should even work in case you have a floating UI using SAW permission (System Alert Window) :
@SuppressLint("InflateParams")
private fun showPopupWindow(anchor: View) {
    val popupWindow = PopupWindow(anchor.context)
    popupWindow.isFocusable = true
    popupWindow.inputMethodMode = PopupWindow.INPUT_METHOD_NOT_NEEDED
    popupWindow.contentView = LayoutInflater.from(anchor.context).inflate(R.layout.popup_layout, null)
    PopupWindowCompat.showAsDropDown(popupWindow, anchor, 0, 0, Gravity.BOTTOM)
}
This is for alignment of bottom-left.
If you need bottom-center, you could use this, for example:
@SuppressLint("InflateParams")
private fun showPopupWindow(anchor: View) {
    val popupWindow = PopupWindow(anchor.context)
    popupWindow.isFocusable = true
    popupWindow.inputMethodMode = PopupWindow.INPUT_METHOD_NOT_NEEDED
    val inflater = LayoutInflater.from(anchor.context)
    val contentView = inflater.inflate(R.layout.popup_layout, null)
    contentView.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED))
    popupWindow.contentView = contentView
    PopupWindowCompat.showAsDropDown(popupWindow, anchor, (anchor.measuredWidth - contentView.measuredWidth) / 2, 0, Gravity.BOTTOM)
}