0

編集:この問題は、タッチデリゲートに間違ったビューを渡すことに起因していました...問題は現在解決されています...。

私のRelativeLayout拡張機能は、のクリック可能な領域を拡大しImageViewます。RelativeLayoutは行のルートViewです。ListView問題は、に委任する必要のある領域をタップすると、ImageViewがトリガーされることです。ListViewonItemClicked

私のコードは最後にあり、以下はの拡張境界がどうあるImageViewべきかを示す画像です。画像ではない青い部分をタップすると、クリックが表示されますListView

青い領域は、ImageViewの新しい境界を示します

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);
}

}
4

1 に答える 1

0

うーん、タッチデリゲートに間違ったビューを渡していることに気づきました>。<現在は正常に機能しています...>。<

于 2012-06-21T00:44:35.817 に答える