0
編輯:這個問題是下到我傳遞錯誤的視圖觸摸代表......現在的問題是解決了....TouchDelegate不正確接收點擊事件
我RelativeLayout
延伸擴大的ImageView
的可點擊區域。 RelativeLayout是ListView
行的根View
。問題是當點擊應該委託給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);
}
}
你在哪裏爲你的RelativeLayout設置了OnClickListener? –
我沒有設置onClickListener,DelegatingRelativeLayout是ListView行的xml佈局文件的根元素。我使用了這裏提到的想法:http://android.cyrilmottier.com/?p=574 –
對於ImageView,我在適配器的getView方法中看到了onClickListener。 –