3

我使用 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 ?
4

1 回答 1

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;
        }
    });
于 2015-01-19T05:20:36.600 回答