как бороться с событием onclick, когда два вида перекрываются - PullRequest
2 голосов
/ 29 февраля 2012

Я использую layoutparams, чтобы установить положение нескольких представлений, некоторые перекрываются. когда я касаюсь перекрывающейся части, оба вида, которые включают перекрывающуюся часть, соответствуют событию касания! но я просто хочу, чтобы вышеупомянутый соответствовал, кто-нибудь может мне помочь? спасибо за ответы!

    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 Ответ

3 голосов
/ 19 января 2015

Вы можете использовать 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;
        }
    });
...