2012-06-18 79 views
0

編輯:這個問題是下到我傳遞錯誤的視圖觸摸代表......現在的問題是解決了....TouchDelegate不正確接收點擊事件

RelativeLayout延伸擴大的ImageView的可點擊區域。 RelativeLayout是ListView行的根View。問題是當點擊應該委託給ImageView的區域時,觸發ListViewonItemClicked

我的代碼在最後,下面是ImageView的擴展邊界應該是什麼的圖像。如果我點擊藍色區域而不是的圖像,則點擊被ListView接收。

Blue areas indicate new bounds of the 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); 
} 

} 
+0

你在哪裏爲你的RelativeLayout設置了OnClickListener? –

+0

我沒有設置onClickListener,DelegatingRelativeLayout是ListView行的xml佈局文件的根元素。我使用了這裏提到的想法:http://android.cyrilmottier.com/?p=574 –

+0

對於ImageView,我在適配器的getView方法中看到了onClickListener。 –

回答

0

唉,我才意識到我已經錯了看法傳遞給觸摸委託>。 <現在工作正常....>。 <