我使用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 ?
答案 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;
}
});