Как перетащить выбранный OnItemLongClick из одного элемента ViewPager в другой - PullRequest
1 голос
/ 29 февраля 2012

Итак, у меня есть FragmentPagerAdapter с фрагментом бара (ListFragment) и фрагментом команды (ListFragment). Когда по элементу долго щелкают, я хочу иметь возможность перетаскивать его со вкладки команд и оставлять на вкладке баров, чтобы установить связь. Теоретически это будет работать аналогично домашнему экрану, где, если я подойду к краю с предметом, я смогу перейти на следующий экран.

ОБНОВЛЕНИЕ:

Я использую 3.0+ или библиотеку совместимости.

Я пытаюсь перетащить на другую вкладку, а не в той же вкладке.

1 Ответ

2 голосов
/ 29 февраля 2012

Это зависит от уровня, на который вы нацеливаетесь.Если ваше приложение предназначено для работы на Android 3.0 или более поздней версии, вы можете использовать встроенный Drag and Drop API .

Если вашему приложению требуется нацеливание на более раннюю версию, Это хорошая библиотека с открытым исходным кодом ( Github page ), которую я использовал ранее и пытаюсь отразить функциональность встроенного API для приложений, ориентированных на 2.0 или более позднюю версию.

В любом случае вы начнете операцию перетаскивания с startDrag() из обратного вызова onItemLongClick().

Редактировать: Извините за путаницу

Вы бы получиличтобы программно вносить изменения «вкладки» в ViewPager на основе данных DragEvent:

  1. Поскольку ViewPager является только частью библиотеки поддержки (и не был перенесен обратно), вы будетевозможно, придется прикрепить OnDragEventListener к родительской ViewGroup.
  2. Вы можете отслеживать местоположение перетаскивания, пока события ACTION_DRAG_LOCATION запускаются для слушателя.Определите разумный порог, которого должен достичь палец в пределах края прослушиваемого просмотра, и, когда он туда попадет, вызовите setCurrentItem() на ViewPager для переключения.
  3. Пока ваша новая вкладка была создана виерархия представлений, когда вы начинали перетаскивание (это контролируется setOffscreenPageLimit() на ViewPager), представления на новой странице также должны быть кандидатами для цели перетаскивания, поэтому они должны иметь возможность прослушивать событие ACTION_DROP.

HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...