У меня есть LinearLayout, который содержит некоторые другие представления. Я реализовал onTouchListener поверх него и хочу переместить его жестом пользователя. но у него есть некоторые другие взгляды внутри, которые имеют там на слушателях щелчка. У меня есть ImageView и 2 кнопки в этом макете, и у этих представлений есть собственные слушатели щелчков. просто посмотрите на макет.
Я могу перемещать свой макет только тогда, когда пользователь нажимает на Свободное пространство, а затем начинает перетаскивать. в то время как я хочу переместить макет, даже если пользователь начинает перетаскивать из-за
Imageview, btn1 или Btn2.
Я знаю, потому что BTN1,2 и ImageView настроены на нажатие, поэтому они потребляют onTouchListener из LinearLayout. Вот некоторый код touchListener
@Override
public boolean onTouch(View mView, MotionEvent event) {
View view = null;
if(!(mView instanceof LinearLayout) && !(mView instanceof RelativeLayout)){
view = (View)(mView.getParent().getParent().getParent());
}else{
view = mView;
}
final int X = (int) event.getRawX();
//final int Y = (int) event.getRawY();
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
_xDelta = X - lParams.leftMargin;
Log.d("TTP", "X_Delta " + _xDelta + " X " + X + " left margin " + lParams.leftMargin);
break;
case MotionEvent.ACTION_UP:
int notMoved = X - _xDelta;
if(notMoved == 0){
Log.d("TTP", "ACTION UP ");
return false;
}
break;
case MotionEvent.ACTION_POINTER_DOWN:
break;
case MotionEvent.ACTION_POINTER_UP:
Log.d("TTP", "POINTER UP ");
break;
case MotionEvent.ACTION_MOVE:
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
int mTotalMargin = X - _xDelta;
boolean isMovingRight = mTotalMargin > 0;
if ((isMovingRight && mTotalMargin < (getScreenWidth() / 2)) || (!isMovingRight && mTotalMargin > (getScreenWidth() / -2))) {
layoutParams.leftMargin = mTotalMargin;
layoutParams.rightMargin = mTotalMargin * -1;
view.setLayoutParams(layoutParams);
Log.d("TTP", "Mov X_Delta " + _xDelta + " X " + X + " getScreenWidth " + getScreenWidth() + " TotalMargin " + mTotalMargin + " " + isMovingRight);
}
break;
case MotionEvent.ACTION_CANCEL:
Log.d("TTP", "CANCEL ");
return false;
}
return true;
}
** Итак, мой вопрос - как я могу обойти операцию перетаскивания из BTN1,2 и ImageView в LinearLayout независимо от их событий щелчка. Пожалуйста, помогите мне, я застрял здесь **