У меня есть ViewPager
, который я использую для отображения нескольких фрагментов. У меня также есть TextView
на моем FragmentActivity
. Мне нужно изменить текст в TextView
в зависимости от того, какой фрагмент в данный момент выбран в ViewPager
. Проблема, с которой я столкнулся: ViewPager
имеет некоторый механизм кэширования, он создает фрагменты, прежде чем они будут действительно видны для пользователя, например, когда я выбираю вторую страницу в ViewPager
фрагмент на третьей странице. Более того, я не могу определить внутри фрагмента, этот фрагмент видимый сейчас или он только что создан ViewPager
, но не очень заметен для пользователя. Я судимое использовать OnPageChangeListener
для этого, но изменения, внесенные в него было неприемлемо медленно для меня (страница прокручивается, а затем мой TextView
изменились)
Что я на самом деле нужно: мне нужно определить, какой фрагмент в настоящее время отображается в ViewPager
, независимо от FragmentActivity
или от Fragment
. Как я могу это достичь?Определите, какой фрагмент в настоящее время виден в ViewPager
ответ
ViewPager.OnPageChangeListener
- очевидный подход здесь. И как вы заметили, onPageSelected(int position)
не вызывается до тех пор, пока страница не будет центрирована (если вы медленно прокручиваете страницу нажатием и удерживанием).
Что мне действительно нужно: мне нужно определить, какой фрагмент в настоящее время виден в ViewPager, независимо от FragmentActivity или самого фрагмента. Как я могу это достичь?
Во-первых, вы не определили «в настоящее время видимый». В ViewPager
, две страницы могут быть видны при прокручивании между ними, и какой из них «в настоящее время виден» в середине салфетки? Мое предположение заключается в том, что вы считаете, что страница «более видимая» будет «в настоящее время видимой».
Сказав это, я рассмотрю использование onPageScrolled (int position, float positionOffset, int positionOffsetPixels)
. Полагают, что positionOffset
может предоставить вам необходимую информацию. Я бы проверил его с некоторыми заявлениями о регистрации, чтобы увидеть, какие данные возвращаются.
- 1. как знать, какой фрагмент виден в ViewPager
- 2. Фрагмент не виден в ViewPager
- 3. Определить, какой фрагмент в настоящее время отображается
- 4. Как проверить, какой фрагмент виден
- 5. Фрагмент в настоящее время отсутствует в FragmentManager при уведомлении viewpager
- 6. org.openqa.selenium.ElementNotVisibleException: Элемент в настоящее время не виден
- 7. Элемент в настоящее время не виден
- 8. Хотите получить объект div, который в настоящее время виден
- 9. ElementNotVisibleException: Message: Элемент в настоящее время не виден ... selenium (python)
- 10. Добавить фрагмент в фрагмент viewPager
- 11. Определите, в каких ветвях имеется набор изменений в настоящее время
- 12. android-кешировать каждый фрагмент в viewpager, но не загружается, пока фрагмент не будет виден пользователю?
- 13. Selenium Webdriver: Элемент в настоящее время не виден
- 14. Какой IP-алиас в настоящее время активен
- 15. Pylab - какой шрифт в настоящее время используется?
- 16. Заменить фрагмент в ViewPager
- 17. Фрагмент отображения в ViewPager
- 18. Обновить фрагмент в ViewPager
- 19. элемента не виден: Элемент в настоящее время не виден и не может манипулировать - Селен WebDriver
- 20. Фрагмент не смог заменить фрагмент в viewpager
- 21. Как обновлять представления, созданные в настоящее время ViewPager
- 22. Как создать фрагмент в viewpager
- 23. Обновить данные в ViewPager Фрагмент
- 24. Замененный фрагмент все еще виден
- 25. Как обновить фрагмент в viewpager?
- 26. фрагмент автоматически обновляется в viewpager
- 27. Как перезапустить фрагмент в viewPager
- 28. Передача значений в фрагмент ViewPager
- 29. Как реализовать фрагмент в ViewPager?
- 30. Невозможно заменить фрагмент в viewpager