2012-02-29 83 views
2

我使用layoutparams來設置幾個視圖的位置,有些重疊。當我觸摸重疊部分時,包含重疊部分的兩個視圖都對應於觸摸事件!但我只想要上面的一個對應,任何人都可以幫助我?謝謝你的回答!如何處理兩個視圖重疊的onclick事件

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(50, 50); 
    params.Left_AlignMargin = 100; 
    params.Top_AlignMargin = 100; 
    relativeLayout.addView(imgeView, params); 

    params = new RelativeLayout.LayoutParams(50, 50); 
    params.Left_AlignMargin = 50; 
    params.Top_AlignMargin = 100; 
    relativeLayout.addView(imageView2, params); 
    //when i clicked the overlapped part, both imageview correspond to my action.how to deal with this ? 
+1

那麼真正的問題是什麼?如果錯誤觀點被觸及,就不要做任何事情,就是這樣。 – Egor 2012-02-29 14:36:22

+0

我很抱歉,我已經解決了這個問題,我忘了關閉它!謝謝你的回答! – 2012-03-05 11:00:36

+1

你是如何解決它的?我有多個圖像視圖的類似問題,其中圖像在節點的一端相交。 – 2012-07-11 10:37:03

回答

3

您可以使用View.OnTouchListener作爲頂視圖上的觸摸事件。當你這樣做時,你可以設置偵聽器返回true(意味着這個觸摸事件消耗整個觸摸事件),它應該防止第二個(基礎)視圖受到影響。 例如:

topView.setOnTouchListener(new View.OnTouchListener() { 


     @Override public boolean onTouch(View v, MotionEvent event) { 
      switch (event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 


        return true; 
       case MotionEvent.ACTION_UP:{ 
        //code for top view 
        return true;//this consumes the entire touch event 

       } 

      } 
      return false; 
     } 
    });