編集:この問題は、タッチデリゲートに間違ったビューを渡すことに起因していました...問題は現在解決されています...。
私のRelativeLayout
拡張機能は、のクリック可能な領域を拡大しImageView
ます。RelativeLayoutは行のルートView
です。ListView
問題は、に委任する必要のある領域をタップすると、ImageView
がトリガーされることです。ListView
onItemClicked
私のコードは最後にあり、以下はの拡張境界がどうあるImageView
べきかを示す画像です。画像ではない青い部分をタップすると、クリックが表示されますListView
。
public class DelegatingRelativeLayout extends RelativeLayout {
//relevant code moved to top
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
final float density = getContext().getResources().getDisplayMetrics().density;
int extra = (int) (density * 4 + 0.5f);
Rect rect = new Rect(0, 0, mEnlargedView.getWidth(), getHeight());
rect.right += extra; //extend bounds by 4 pixels
setTouchDelegate(new TouchDelegate(rect, mEnlargedView));
mExtendedBounds = rect;
}
public void setEnlargedView(View v) {
mEnlargedView = v;
}
private static final boolean DEBUG_DRAW = true;
private View mEnlargedView;
private Rect mExtendedBounds;
//constructors removed
@Override
protected void dispatchDraw(Canvas canvas) {
if (DEBUG_DRAW) {
Paint p = new Paint();
p.setColor(Color.BLUE);
canvas.drawRect(mExtendedBounds, p);
}
super.dispatchDraw(canvas);
}
}