首页 > 解决方案 > 直接在页面底部显示 AppCompatDialog

问题描述

我想在位于屏幕底部的按下按钮上方显示一个 AppCompatDialog。到目前为止,我的逻辑是这样的:

fun showAboveView(supportFragmentManager: FragmentManager, canonicalName: String?, anchor: View) {
    this.show(supportFragmentManager, canonicalName)
    val location = IntArray(2)
    anchor.getLocationOnScreen(location)
    xPosition = location[0]
    yPosition = anchor.height
}


override fun setupDialog(dialog: Dialog, style: Int) {
    super.setupDialog(dialog, style)


            dialog.setOnShowListener {
                dialog.window!!.apply {
                    setLayout(
                            ViewGroup.LayoutParams.WRAP_CONTENT,
                            ViewGroup.LayoutParams.WRAP_CONTENT)
                    isFloating
                    setGravity(Gravity.BOTTOM)
                    setPosition()
       }
    }
}

 private fun setPosition() {
    dialog?.window?.let {
        val params = it.attributes
        params.x = xPosition
        params.y = yPosition
        it.attributes = params
    }
}

对话框正确显示在我的锚点上方,但问题是当我点击按钮时,对话框显示在屏幕中央,然后它拖动到正确的位置,使它看起来像一个奇怪的动画。

我的问题是,如何直接在想要的位置显示对话框?

标签: kotlinappcompatdialog

解决方案


推荐阅读