ViewPager setCurrentItem Slide

Ma7*_*gar 11 android android-fragments

我有一个Activity包含ViewPager,这个ViewPager中的第一个Fragment包含ListView,当我点击任何Item时它用选定的一个替换这个Fragment,我使用setCurrentItem(selectedItem,true)//for smooth scroll ViewPager滑过所有Fragments,然后选择Fragment我想让它滑到选中的Fragment在我试图使用的所有片段PageTransfrom.transformPage上

@Override
public void transformPage(View page, float position) {
    int currentItem = viewPager.getCurrentItem();
    if (currentItem != selectedItem)
        page.setVisibility(View.GONE);
}
Run Code Online (Sandbox Code Playgroud)

但没有运气

HC *_*ang 4

一种可能的解决方案是修改 PagerAdapter 以始终返回您想要的第 2 项页面。

getItem(int position)当单击第一页中的任何项目时,首先更改PagerAdapter 方法的实现(如果您的 PagerAdapter 是在代码的同一类文件中实现的话,这很容易),以返回您想要的页面position == 2,然后称呼setCurrentItem(2, true)。这可以直接平滑滚动到所选页面。您可能还需要更改getCount()以将计数限制为仅 2,否则下一页可能不是预期的页面。

但此方法会忽略其他页面。用户只能滚动回第一页,然后导航到另一个页面。如果您想通过手动滚动(而不是通过单击)保持页面的自然顺序,您可以getItem(int position)在滚动(通过单击)停止后恢复到默认实现,并通过调用setCurrentItem(position, false)(立即,这次不太顺利),然后用户可以手动来回滚动。