一、方式一
通过添加padding来扩大点击区域。
二、方式二
TouchDelegate让父视图能够将子视图的可轻触区域扩展到子视图的边界之外。当子视图必须较小,同时又应该具有较大的轻触区域时,此方法很有用。
TouchDelegate的使用方法很简单,考虑下图这种情形
我们想扩大View2的点击区域至View1内部的Bounds区域,只需在View2完成绘制后获取到其扩展区域Bounds相对于View1的坐标,再为View1设置TouchDelegate即可。代码如下:
view1.post(new Runnable() {
@Override
public void run() {
Rect bounds = new Rect();
// 获取View2区域在View1中的相对位置,这里因为View1是View2的直接父View,所以使用getHitRect()
view2.getHitRect(bounds);
// 计算扩展后的区域Bounds相对于View1的位置,left、top、right、bottom分别为View2在各个方向上的扩展范围
bounds.left -= left;
bounds.top -= top;
bounds.right += right;
bounds.bottom += bottom;
// 创建TouchDelegate
TouchDelegate touchDelegate = new TouchDelegate(bounds, view2);
// 为View1设置TouchDelegate
view1.setTouchDelegate(touchDelegate);
}
}