У меня есть два ViewPager
s - один под другим. Теперь клиент хочет, чтобы мы добавили возможность развернуть нижнюю ViewPager
(с тремя ListView
s), чтобы наложить верхнюю часть ViewPager
. Когда я положил оба ViewPager
s в ScrollView
, ListView
s в нижней части ViewPager
перестали работать. Сначала я помещал их в RelativeLayout
и добавлял верхнее дополнение ко всем ListView
s и устанавливал фон null
, но тогда верхняя ViewPager
не была доступна для клика (хотя и видимая). Как я могу заставить это работать?Как наложить ViewPager на другой ViewPager
ответ
Это сложно, и я могу отсутствовать некоторые шаги, но по сути то, что вам нужно сделать, это следующее:
- Поместите два
ViewPager
сек вLinearLayout
. Пока родитель будет соответствовать его родительскому по высоте, дети будут завернуты. - Внесите
AbsListView.OnScrollListener
и установитеOnScrollListener
ваших трехListView
s для этой реализации. - В этой реализации (либо в
onScrollStateChanged(AbsListView view, int scrollState)
, либо вonScroll(final AbsListView listView, int firstVisibleItem, int visibleItemCount, int totalItemCount)
вам придется сами это выяснить) получить дельта текущего и старого положения прокрутки - получить расстояние и направление (по существу, правильный знак) свиток. - Измените координату y ваших двух
ViewPager
s соответственно, управляя краевыми случаями.
Проблема была очень интересной, и я добавил project at Github, пытаясь решить проблему самостоятельно. Вы можете клонировать проект и запускаться, чтобы узнать, что произойдет.
Идея состоит в том, чтобы иметь два ViewPager
внутри NestedScrollView
и ViewPager
внизу, содержащий RecyclerView
.
Вам нужно помнить, что он будет работать только с RecyclerView 23.2.0
и выше. Так что вам нужно добавить следующее в ваш build.gradle
compile 'com.android.support:recyclerview-v7:23.2.0'
Хотя NestedScrollView
служит цели, он генерирует некоторое нежелательное поведение тоже. Например, список внизу ViewPager
автоматически прокручивается вниз, когда список заполняется. Поэтому я должен был добавить следующее в мой MainActivity
mNestedScrollView.smoothScrollTo(0, 0);
Вы должны обращаться с надлежащей прокруткой здесь, когда фрагменты прокатывается в ViewPager
каждый раз. Я добавил onPageChangeListener
с обоими ViewPager
и добавил комментарии там.
Еще одна вещь, которую вы должны иметь в виду, что в главном файле макета, который является activity_main.xml
, мне нужно было сохранить высоту как ViewPager
, так и исправленную. Вы можете рассмотреть возможность изменения layout_height
согласно вашему требованию.
Cheers!
- 1. Viewpager внутри Viewpager сделать родительский Viewpager swipable?
- 2. ViewPager вложен в ViewPager
- 3. Android ViewPager внутри ViewPager
- 4. Почему внутри ViewPager потерял страницы в ViewPager внутри случая ViewPager?
- 5. Viewpager с динамическими элементами управления внутри viewpager
- 6. Сделать ViewPager как на картинке
- 7. Как запретить скольжение на Viewpager?
- 8. android - объединить горизонтальный viewpager с вертикальным viewpager
- 9. Sound Play на viewpager
- 10. SimpleCursorAdapter на ViewPager
- 11. ViewPager показывая на среднем
- 12. Закрытие приложения на ViewPager?
- 13. Android - NullPointerException на ViewPager
- 14. Recyclerview in viewpager только расширяет длину viewpager
- 15. Настройка ViewPager
- 16. Android Viewpager внутри Viewpager, не отображающий макет
- 17. Landscape ViewPager
- 18. Измерение ViewPager
- 19. Настроить ViewPager
- 20. Дети ViewPager
- 21. Как заменить фрагмент на другой фрагмент в TabLayout и ViewPager
- 22. Как обновить содержимое ViewPager?
- 23. Android share viewpager для другой деятельности
- 24. java.lang.IllegalStateException: ViewPager
- 25. Как установить размер ViewPager
- 26. Как включить другой Tab ViewPager в другой фрагмент?
- 27. Smooth ViewPager
- 28. вид ViewPager на кириллице андроид
- 29. Как получить ActionBarSherlocks ViewPager
- 30. ViewPager - ошибка
Какое действие пользователя означает красная стрелка? Это «прокрутка», когда конец нижнего «ListView» достигнут »?Или любой прокрутка выталкивает верхний 'ViewPager'? – kalabalik
И это «все или ничего» для верхнего 'ViewPager'? Или вы хотите, чтобы он отображался частично, когда он не был полностью прокручен или включен? – kalabalik
Начало прокрутки должно вытолкнуть верхний ViewPager или закрыть его. Я хочу показать его частично, когда вы поднимаетесь или закрываетесь снизу ViewPager. –