美文网首页
Android View.performClick()无效时的解

Android View.performClick()无效时的解

作者: 寻水的鱼Chock | 来源:发表于2023-07-12 08:58 被阅读0次

    前言

    开发过程中,经常需要利用代码去触发View的点击动作,通常也只需要调用View.performClick()就能实现。但是有时候却不管用,通过源码可以发现,这个View只能触发自己所设置的点击事件的回调,对于涉及多个View层级的ViewGoup组合就会不起作用。源码截图如下:

    View.performClick源码

    如何实现这种情况下的点击动作呢?----可以通过Activity.dispatchTouchEvent()模拟分发触摸事件就能实现!

    解决方案

    利用代码模拟产生ACTION_DOWN和ACTION_UP触摸事件触发View的点击效果:

    activity.let {
        val cl = arrayOf(100f,100f)//点击坐标
        //模拟生成ACTION_DOWN事件
        val upt = SystemClock.uptimeMillis()
        val ev = MotionEvent.obtain(upt, upt, MotionEvent.ACTION_DOWN, cl[0], cl[1], 0)
        it.dispatchTouchEvent(ev)
         //模拟生成ACTION_UP事件
        it.dispatchTouchEvent(MotionEvent.obtain(ev).also { it.action = MotionEvent.ACTION_UP })
    }
    

    ps: 获取View的坐标可以使用View.getLocationInWindow()函数或者View.getChildVisibleRect()函数



    如果本文对你有帮助就点个赞支持下吧~~~

    相关文章

      网友评论

          本文标题:Android View.performClick()无效时的解

          本文链接:https://www.haomeiwen.com/subject/owcuudtx.html