Articles of android viewpager

使用滚动RecyclerView时如何在ViewPager中隐藏工具栏?

我在view-pager中有一个工具栏(带有水平滑动导航的选项卡式工具栏),每个选项卡都有自己的带有recyler_view的片段。 我现在想要在我的recyler_view滚动时隐藏工具栏。 在我的片段中,我添加了on scroll-listener,并希望在其activity类中调用一个方法来隐藏工具栏。 工具栏在活动中创建。 如何从我的片段中调用此方法? 或者在我的片段本身中实现这种隐藏方法会更好。 但是,我怎么能“联系”我的工具栏,这是在活动中而不是在片段中创建的。 我find了解决方案,但没有一个讨论片段中的recylcer_view和用于选项卡式导航的view-pager。 如果你可以帮助我会很棒……

以前的数据显示在ViewPager Android上

在我的应用程序中,我有一个带有CirclePageIndicator ,它正在工作。 它在One pager中显示两个项目。 当我滑动到另一个寻呼机时,它显示前一个项目。 我不想要它。 我希望一次刷两件物品。 不会显示已在寻呼机上显示的上一个。 这是我之前的问题,它与此有关。 在ViewPager android中显示两个项目 。 目前工作像 ItemA,ItemB | ItemB,ItemC | ItemC,ItemD | 我想要像 ItemA,ItemB | ItemC,ItemD | ItemE,ItemF | 这是我用来在一个寻呼机中显示两个项目的代码。 @Override public float getPageWidth(int position) { return(0.5f); } Adapter.class public class ViewPagerAdapter extends PagerAdapter { // Declare Variables Context context; String[] domain; String[] title; int[] flag; LayoutInflater inflater; […]

单个活动中的多个AsyncTaskLoader – 是否必须在onCreate中初始化每个加载器?

我有一个带有ViewPager的FragmentActivity – 这个ViewPager包含三个ListViews – 每个ListViews都有自己独特的适配器(和唯一的数据集)。 我想使用AsyncTaskLoader来填充这些适配器,但仅限于在ViewPager中选择给定视图时。 是否需要在activity的onCreate方法中初始化一个加载器? (下面的代码) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_foo); getSupportLoaderManager().initLoader(0, null, this); getSupportLoaderManager().initLoader(1, null, this); getSupportLoaderManager().initLoader(2, null, this); } 或者可以交互式地调用initLoader(…),例如OnPageChangeListener.onPageSelected的监听器的结果? mPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int newPage) { getSupportLoaderManager().initLoader(newPage, null, this); } … } 如果用户可能只看到寻呼机中的第一个视图,我想避免必须预先执行3个耗时的加载器。 编辑:或者让ViewPager为每个视图使用Fragment是一个更好的设计,每个片段都负责管理自己的加载器?

在ViewPager或PagerAdapter中动态更改PagerIndicator的计数

我想要的是: 当页面宽度为一半时,底部圆圈指示符的数量必须是页面数量的一半。 当页面宽度已满时,底部圆圈指示符的数量必须与页数一样多。 还有另外一个要求: 当页面宽度为一半时,我可以在单个滚动中滚动两页吗? 当页面宽度已满时,在单个滚动中只滚动一页? 页面宽度由PagerAdapter#getPageWidth()获取 谁能为此提供完美的解决方案? 没有制作两个布局文件或两个适配器? 这是我为实现这个基于GIF的活动而开发的完整源代码。 问题改进将被接受。 https://github.com/raghavsatyadev/DemoPort

Viewpager:如果页面被删除,则下一页内容将获取已删除的页面内容

(如果有人需要更多信息,或者更好的描述让我知道) 你好,我在这里包含了viewPagerLibrary: http ://viewpagerindicator.com/#introduction今天在我的项目中。 不,我得到一个非常奇怪的问题:如果我添加一个网站或页面(让我们在接下来的几行中调用它)并再次删除它一切都可以。 但是,如果我尝试添加不同的页面(那些页面是实现BaseFragment类的不同Fragements),则会显示第一页的内容。 如果我添加几个页面并在这些页面之间删除一个页面,则会发生同样的事情。 删除页面之后的页面现在显示已删除的页面内容。 这个bug的一个例子:现在的问题是。 如果我在FragmentB之后添加FragmentA,那么我删除FragmentA,FragmentB获取FragmentA的视图/内容。 奇怪的是,对象是正确的(因此适配器返回正确的对象),标题也是正确的。 在我的主要内容中,我以这种方式创建我的寻呼机,指示器和适配器: Cfg.mAdapter = new FragmentAdapter(getSupportFragmentManager()); Cfg.mPager = (ViewPager)findViewById(R.id.pager); Cfg.mPager.setAdapter(Cfg.mAdapter); Cfg.mIndicator = (TabPageIndicator)findViewById(R.id.indicator); Cfg.mIndicator.setViewPager(Cfg.mPager); //We set this on the indicator, NOT the pager Cfg.mIndicator.setOnPageChangeListener(TabHelper.onPageChangeListener); (Cfg是一个静态文件,用于存储这些东西以供使用) 我的BaseFragment如下所示: public class BaseFragment extends Fragment{ public static int FILE_FRAGMENT = 0; public static int FTP_FRAGMENT = 1; public static […]

如何animationRecyclerView像垂直Viewpager转换

我在我的项目中使用了Vertical Viewpager 。 但是有一些问题, 当页面有很多onclick()事件时, 滚动太难了 fling事件不会更改页面 我尝试使用手势检测器,但它没有转换就更快地更改了页面( 没有调用transformPage() ) 当我滚动页面时,有时onclick()事件也会被触发 所以我决定在PagerSnapHelper的帮助下use Recyclerview as Viewpager 。 它工作正常。 但问题是, 如何更改项目时如何进行转换或animation(就像我在ViewPager中所做的那样) 例如,Viewpager中的Zoomout转换或堆栈转换。 我尝试了stackLayoutManager,但滚动并尝试此相关链接需要更多时间。它不起作用。 我研究了两个问题如何降低viewpager的滚动速度以及如何在recyclerview中进行animation制作 。 我没有得到它的解决方案。 谁能帮我!!! 是否可能或我需要使用任何其他小部件。 编辑 我尝试了#ADM的建议,它工作正常,但不支持PagerSnapHelper。 我在上面的链接中更改了stacklayout manager,但它不支持scrollToPosition()和PagerSnapHelper。 码: public class StackLayoutManager extends LinearLayoutManager { private static final String TAG = “StackLayoutManager”; //the space unit for the stacked item private int mSpace = […]

Android SimpleOnPageChangeListener – 确定滑动方向

我有一个扩展SimpleOnPageChangeListener的类,在我的onPageScrollStateChanged方法中,我希望能够确定用户是通过ViewPager向前还是向后滑动。 即他们是否从左到右或从右到左滑动。 我已经做了很多谷歌搜索,但我找不到任何关于它。 我原以为onPageScrollStateChanged方法会提供一个参数,说明滑动的方向,但不是。 @Override public void onPageScrollStateChanged(int state) { // Determine whether the user is swiping forwards or backwards through the ViewPager } 有没有人有任何想法? 干杯迈克

Android – 在ViewPager中替换片段时的Backstack

我正在创建具有三个视图的ViewPager。 在第一个视图是ListView,其中onItemClick用其中的WebView替换该片段的新片段。 我有两个问题:添加’transaction.addToBackStack(null)’或’transaction.setCustomAnimations(…)’片段与WebView停止显示。 没有这些线显示,但我不能按BACK按钮返回列表。 我正在基于该教程和这个问题创建代码。 在那个问题中,使用了PagerAdapter,我正在使用FragmentPagerAdapter。 另外,我不需要更换更多碎片。 它只能一次(从列表到webView,然后返回)。 这是我的适配器代码: public Fragment getItem( int position ) { Fragment fragment = null; switch ( position ) { case 0: // news if ( mFragmentAtPos0 == null ) { mFragmentAtPos0 = new NewsListFragment( new FirstPageFragmentListener() { @Override public void onSwitchToNewsFragment( String url, ViewGroup container ) { FragmentTransaction transaction […]

在刷卡后,使用RecyclerView复制碎片出现在ViewPager中

使用RecyclerView的片段在ViewPager中存在问题。 在刷卡后重新创建片段时,重复的RecyclerView会重叠显示。 我正在使用ViewPager,Fragment,FragmentStatePagerAdapter 图1:RecyclerView第一次没问题。 图2:在扫描多个片段然后向后滑动到相同片段之后,复制片段在滚动时重叠。 使用FragmentStatePagerAdapter class SlidingFragmentPagerAdapter extends FragmentStatePagerAdapter { SparseArray registeredFragments = new SparseArray(); FragmentManager fm; public SlidingFragmentPagerAdapter(FragmentManager fm) { super(fm); this.fm = fm; } @Override public Fragment getItem(int position) { Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, -1 * (FragmentViewPager.MAX_PAGE – position – 1)); return FragmentMain.newInstance(position + “”, cal.getTime()); } @Override public int getCount() […]

Drawable in View被压扁了

问题与疑问: 我目前有一个视图寻呼机,里面只有2页/视图,水平相邻。 我的观点是自定义的,它以低不透明度/ alpha值绘制双色渐变和顶部的图像。 我发现当我在屏幕上滑动以从第一个视图/页面移动到第二个视图/页面或反之亦然时,图像会被压扁。 如何阻止这种情况发生,并正常绘制它们? 例: 左侧图像显示可见的第一个视图, 预刷卡 ; 右图显示了两个视图, 中途通过滑动 。 码: 我有一个我之前设置的DrawablevariablesoverlayImage ,除了设置不透明度之外,我没有做任何其他事情。 @Override protected void onDraw(Canvas canvas) { p.setShader(new LinearGradient(0, 0, 0, getHeight(), startColor, endColor, Shader.TileMode.MIRROR)); canvas.drawPaint(p); //Pretty sure the mistake is around these two next lines overlayImage.setBounds(canvas.getClipBounds()); overlayImage.draw(canvas); }