次のコードを使用して、ビューのタッチ デリゲートを作成しています。問題は、クリック可能な領域を増やしたいビューが非常に狭い LinearLayout 内にあることです。したがって、以下のコードはビューのクリック可能な領域を増やすことができますが、狭い LinearLayout の範囲内でのみです。この関数に myView の親ではなく祖父母 (myView.getParent().getParent()) を渡したいと思います。これは、より大きなクリック可能な領域のためのスペースを持つ RelativeLayout です。しかし、その後 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);
}
};
}
助言がありますか?