【问题标题】:Open ViewPager2 to particular position without scrolling在不滚动的情况下将 ViewPager2 打开到特定位置
【发布时间】:2020-05-06 16:40:40
【问题描述】:

我用一些视频实现了一个 recyclerview(比如 10 个)。单击任何项​​目都会打开一个viewpager2 which is on some other activity,其中包含所有项目and,其中显示了被单击的项目(来自recyclerview)。之后,用户只能从那里滚动到其他项目。一切正常。

只有当recyclerview项目点击viewpager2在哪里打开时滚动出现问题。

无论何时选择任何项目(第 10 位)。 viewpager 首先打开,然后滚动到(第 10 个)位置。我想直接打开viewpager2的第10个位置而不滚动。任何帮助,将不胜感激。

我已经尝试将当前项目设置为

viewPagerReview.currentItem = recyclerviewItemSelectedPosition

但如果当前项目是 recyclerview 的最后一个位置,那么 viewpager 也会滚动到最后一个位置。

【问题讨论】:

  • 你能分享更多你的代码吗?问题似乎很清楚。但是,如果可以的话,它会更有帮助。 RecyclerView 中有一个方法可以在没有平滑滚动的情况下滚动。你不会看到它滚动,它会直接把你带到你想要的位置。
  • 你试过recyclerView.layoutManager.scrollToPosition吗?
  • @Nizar 好的,我认为我的问题在这里有点令人困惑。问题在于 viewpager2 滚动。我没有在这里滚动回收站视图。需要打开在回收站列表中选择位置的其他活动上的 viewpager。感谢您快速回复。我已经编辑了我的问题。
  • 其实你很清楚,我没有。根据 AndroidWiki,viewpager2 在您设置 currentItem 时有一个默认的 smoothScroll。现在我的问题是,您是否考虑传递 selectedPosition 并使用 RecyclerView 滚动到它?
  • 不,不是回收站视图。只需直接使用位置和列表数据到 viewpager2 即可。假设,如果回收站视图有 15 个项目并且我单击第 10 个,则 viewpager 在另一个活动中打开并由于viewPagerReview.currentItem = recyclerviewItemSelectedPosition 代码滚动到第 10 个位置。

标签: android android-recyclerview android-viewpager2


【解决方案1】:

好吧,根据 AndroidDocs 上的ViewPager2setCurrentItem(item: Int) 会这样做:

设置当前选中的页面。如果 ViewPager 已经通过其当前适配器的第一个布局,则当前项和指定项之间将有一个平滑的动画过渡。

因此,您将要使用另一种方法,即setCurrentItem(item: Int, smoothScroll: Boolean) 来指定是否要使用smoothScroll

所以,就你而言,选择:

viewPagerReview.setCurrentItem(recyclerviewItemSelectedPosition, false)

【讨论】:

  • 我很高兴它做到了@NarendraPal :)
  • 但这实际上并不可靠。有时它会选择正确的页面,有时则不会。可能是事件驱动的 Android 混乱中的竞争条件。我不得不使用 postDelayed() 将其延迟一点,但请注意,这是一个讨厌的 hack,不能保证它适用于所有设备:(
  • @JiříKřivánek 这不是黑客,这是使用的实际正确方法。现在我不知道比赛条件。该方法有可能会干扰导致这种竞争条件的其他因素。有什么方法可以与我分享发生这种情况的项目或一些代码或 github 存储库?如果可以,请这样做...我很想看看您所面临的问题。
  • 在我更新到"androidx.viewpager2:viewpager2:1.1.0-alpha01"之前它对我不起作用
  • 这里也一样。它在第一次通话时可重现地不起作用。切换到 1.1.0-alpha01 有帮助
猜你喜欢
  • 2019-01-07
  • 1970-01-01
  • 2021-10-04
  • 2016-01-19
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多