我正在使用以下代码来创建视图的触摸委托。问题是我想要增加的可点击区域的视图在非常窄的 LinearLayout 内。所以下面的代码可以增加我的视图的可点击区域,但仅限于我狭窄的 LinearLayout 的范围内。我想传递给这个函数的不是父函数,而是 myView (myView.getParent().getParent()) 的祖父函数。这是一个相对布局,有更大的可点击区域空间。但是随后 touchRect 将指向错误的位置,并且我的 TouchDelegate 的位置将不正确..
因为:delegate.getHitRect(touchRect); 返回相对于父母的位置,而不是祖父母(或父母的父母)。
public static Runnable getTouchDelegateAction(final View delegate, final View parent, final int topPadding, final int bottomPadding, final int leftPadding,
final int rightPadding) {
return new Runnable() {
@Override
public void run() {
// Construct a new Rectangle and let the Delegate set its values
Rect touchRect = new Rect();
delegate.getHitRect(touchRect);
// Modify the dimensions of the Rectangle
// Padding values below zero are replaced by zeros
touchRect.top -= Math.max(0, topPadding);
touchRect.bottom += Math.max(0, bottomPadding);
touchRect.left -= Math.max(0, leftPadding);
touchRect.right += Math.max(0, rightPadding);
// Now we are going to construct the TouchDelegate
TouchDelegate touchDelegate = new TouchDelegate(touchRect, delegate);
// And set it on the parent
parent.setTouchDelegate(touchDelegate);
}
};
}
有什么建议么?