kotlin - 直接在页面底部显示 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
}
}
对话框正确显示在我的锚点上方,但问题是当我点击按钮时,对话框显示在屏幕中央,然后它拖动到正确的位置,使它看起来像一个奇怪的动画。
我的问题是,如何直接在想要的位置显示对话框?
解决方案
推荐阅读
- python - 使用 AWS Lambda 函数 Python 的递归 API 调用
- c# - DBUP - 按顺序运行脚本
- postgresql - 将数据库 oracle 迁移到 postgresql:过程
- python - 在 Python 中,如何根据指定的文件扩展名创建文件列表?
- java - SSLHandshakeException:PKIX 路径构建失败
- android - 为什么项目选择在普通列表的recyclerview中不起作用但在搜索列表中起作用?
- packer - 我可以让脚本互相调用吗?Packer 如何让编写许多脚本成为可能?
- python - 基数为 10 的 int() 的无效文字:'(1,2,3,4,5,6,7)'
- git - Git stash 和 unstash 删除了我的 stash 而不将其添加到版本中
- sql - 间隔从数据库中提取订单详细信息