FrameLayoutやRelativeLayoutの上に別のLayoutを重ねたときに、下のLayoutにタッチイベントを発生させない方法のメモ。
.java
RelativeLayout parent = new RelativeLayout(getContext());
RelativeLayout child = new RelativeLayout(getContext());
parent.addView(child);
例えばこんな感じでRelativeLayoutを重ねると、childをタッチした後にparentのタッチイベントが発生してしまう。
そのため、タッチした座標にparentのButtonなどがあれば反応してしまう。
parentにタッチイベントを発生させたくない時は、以下のようにchildのTouchListenerの戻り値をtrueにしてあげればよい。
.java
child.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return true;
}
});