Android开发长按某个控件将PopupWindow显示在手指长按的位置处的实现方法

//Kotlin语法
class TestActivity:Activity(){   private var touchEvent: MotionEvent? = null   override fun dispatchTouchEvent(event: MotionEvent?): Boolean { if (event?.action == MotionEvent.ACTION_DOWN) {  //重点1:重写Activity的dispatchTouchEvent方法,保存一下按下的event。 touchEvent = event } return super.dispatchTouchEvent(event) }   private fun showPopupWindow() {  //重点2,将PopupWindow显示在window的decorView下,位置为按下的event的rawX和rawY的值。 popupWindow.showAsDropDown(window.decorView, touchEvent?.rawX?.toInt() ?: 0,touchEvent?.rawY?.toInt() ?: 0)
     //重点3:今天突然发现使用window.decorView部分手机有适配问题,改为使用自己App的状态栏ToolBar就可以了(一般每个App都有自己的ToolBar或者自定义的ToolBarView之类的吧)。 } }
原文地址:https://www.cnblogs.com/yongfengnice/p/11549283.html