2012-02-29 3 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

+0

Прошу прощения, я решил эту проблему, я забыл закрыть ее! Спасибо за ответ! –

+1

Как вы его решили? У меня есть аналогичная проблема с несколькими видами изображений, в которых изображения пересекаются на одном конце узла. –

ответ

3

Вы можете использовать View.OnTouchListener как событие касания на вид сверху. Когда вы это сделаете, вы можете настроить прослушиватель на возврат истины (это означает, что это событие касания поглощает все событие касания), и это должно препятствовать тому, чтобы второе (основное) представление было затронуто. Пример:

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