android 常见的使用 view 点击区域的方式一般有两种:
- 拓展 view 本身的面积,或者将点击事件设置在父布局上(该方法比较常用,但是需要修改相关的布局文件)
- 重写 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)
}
}