android 拓展 View 点击区域实现

304 阅读1分钟

android 常见的使用 view 点击区域的方式一般有两种:

  1. 拓展 view 本身的面积,或者将点击事件设置在父布局上(该方法比较常用,但是需要修改相关的布局文件)
  2. 重写 view 的 touchDelegate 来改变响应的面积。该方法使用较为简单,推荐使用。代码如下所示:
    /**
     * 扩充View的点击区域
     */
    fun expendTouchArea(view View, expendSize: Int) {
        val parentView = view.parent as View
        parentView.post {
            val rect = Rect()
            getHitRect(rect) // view构建完成后才能获取,所以放在post中执行
            // 重新指定响应的 rect
            rect.top -= expendSize
            rect.bottom += expendSize
            rect.left -= expendSize
            rect.right += expendSize

            parentView.touchDelegate = TouchDelegate(rect, view)
        }
    }