Добрый день!У меня проблема с перетаскиванием слушателей.У меня есть представление в виде календаря, где вы перетаскиваете событие вверх и вниз, чтобы изменить время, и влево-вправо, чтобы изменить даты.Проблема в том, что когда я показываю новый линейный макет для новой даты после перетаскивания вида сбоку в течение определенного времени (это вызовет дату изменения), прослушиватели перетаскивания в этом когда-то скрытом макете не реагируют на мое перетаскиваемое представление.Обратите внимание, что благодаря этому я также скрываю родителя представления, которое в данный момент перетаскивается.
Это мой код для смены позиций.Мои перетаскиватели для контейнеров перетаскиваемых событий выглядели так же.
barLeft.setOnDragListener(new OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_ENTERED:
if (position - 1 >= 0) {
goToNext = true;
v.setBackgroundResource(R.drawable.bg_scheduled_bookings_next_left);
changePageRunnable = new Runnable() {
@Override
public void run() {
if (goToNext) {
setPosition(position - 1);
goToNext = false;
}
}
};
getHandler().postDelayed(changePageRunnable, 1000);
}
break;
case DragEvent.ACTION_DRAG_EXITED:
case DragEvent.ACTION_DRAG_ENDED:
v.setBackgroundColor(Color.TRANSPARENT);
goToNext = false;
default:
break;
}
return true;
}
});
barRight.setOnDragListener(new OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_ENTERED:
if (position + 1 < scheduledBookingContainer.getChildCount()) {
goToNext = true;
v.setBackgroundResource(R.drawable.bg_scheduled_bookings_next_right);
changePageRunnable = new Runnable() {
@Override
public void run() {
if (goToNext) {
setPosition(position + 1);
goToNext = false;
}
}
};
getHandler().postDelayed(changePageRunnable, 1000);
}
break;
case DragEvent.ACTION_DRAG_EXITED:
case DragEvent.ACTION_DRAG_ENDED:
v.setBackgroundColor(Color.TRANSPARENT);
goToNext = false;
default:
break;
}
return true;
}
});
И вот как я начинаю перетаскивать событие в моем календаре
container.setOnTouchListener(new OnTouchListener() {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
ClipData data = ClipData.newPlainText("", "");
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v);
v.startDrag(data, shadowBuilder, v, 0);
v.setVisibility(View.INVISIBLE);
return true;
} else {
return false;
}
}
});
проблема в том, что мои draglisteners на моих недавно показанных линейных слоях не реагируют на мое перетаскиваемое представление.Большое спасибо тому, кто мне поможет.