两个视图重叠时如何处理onclick事件

时间:2012-02-29 14:13:42

标签: android android-view android-event

我使用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 个答案:

答案 0 :(得分: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;
        }
    });