Articles of android viewpager

SwipeRefreshLayout + ViewPager,仅限水平滚动?

我在我的应用程序中实现了SwipeRefreshLayout和ViewPager ,但是有一个很大的麻烦:每当我要向左/向右滑动来切换页面时,滚动过于敏感。 向下轻扫一下也会触发SwipeRefreshLayout刷新。 我想设置水平滑动开始的限制,然后强制水平,直到刷卡结束。 换句话说,当手指水平移动时,我想取消垂直翻转。 这个问题只发生在ViewPager ,如果我向下滑动并触发SwipeRefreshLayout刷新function(显示条),然后水平移动我的手指,它仍然只允许垂直滑动。 我试图扩展ViewPager类,但它根本不工作: public class CustomViewPager extends ViewPager { public CustomViewPager(Context ctx, AttributeSet attrs) { super(ctx, attrs); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { boolean in = super.onInterceptTouchEvent(ev); if (in) { getParent().requestDisallowInterceptTouchEvent(true); this.requestDisallowInterceptTouchEvent(true); } return false; } } 布局xml: <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/viewTopic" android:layout_width="match_parent" android:layout_height="match_parent"> <com.myapp.listloader.foundation.CustomViewPager android:id="@+id/topicViewPager" android:layout_width="match_parent" android:layout_height="match_parent"/> </android.support.v4.widget.SwipeRefreshLayout> 任何帮助将不胜感激,谢谢

在ViewPager中区分用户滚动和编程页面更改

我在我的应用程序中有一个android.support.v4.view.ViewPager ,我想区分编程启动的平滑滚动和用户启动的触摸滚动。 我已经看了ViewPager.OnPageChangeListener ,我相信答案可能在那里,但我不知道如何。

只有在PagerSlidingTabStrip中单击其选项卡时才能加载片段数据

我在我的项目中使用PagerSlidingTabStrip ,并显示片段中的数据。 它是一个很棒的图书馆,效果很好。 每个片段由一个从Web服务加载的学者讲座组成。 访问Web服务的代码位于Fragment的onCreateView方法中。 目前所有片段的数据在被添加到ViewPager的同时被加载。 我想知道是否有任何方式加载碎片的数据只有当用户点击/滑动到特定的选项卡。 并非一次一切。 目前的代码是非常标准的,我从提供的例子[android解决scheme]中获得帮助。 1 寻呼机适配器如下: public class ScholarDetailPagerAdapter extends FragmentPagerAdapter { private final String[] TITLES = { "Scholar Info", "Lectures"}; Scholar _scholar; public ScholarDetailPagerAdapter(FragmentManager fm, Scholar scholar) { super(fm); _scholar = scholar; } @Override public CharSequence getPageTitle(int position) { return TITLES[position]; } @Override public Fragment getItem(int arg0) { if(arg0 […]

如何正确处理与ViewPager和嵌套片段的屏幕旋转?

我有这个活动,它包含一个片段。 这个片段布局由一个带有几个片段的视图分页器(实际上是两个)组成。 当view pager被创build时,它的适配器被创build, getItem被调用并且我的子片段被创build。 大。 现在,当我旋转屏幕,框架处理重新创build片段,适配器是在我的onCreate从主要片段再次创build,但getItem永远不会被调用 ,所以我的适配器持有错误的引用(实际上是空值),而不是两个片段。 我发现的是,片段pipe理器(也就是子片段pipe理器)包含一个名为mActive的片段数组,这当然是不能从代码访问的。 但是有这个getFragment方法: @Override public Fragment getFragment(Bundle bundle, String key) { int index = bundle.getInt(key, -1); if (index == -1) { return null; } if (index >= mActive.size()) { throwException(new IllegalStateException("Fragement no longer exists for key " + key + ": index " + index)); } Fragment f […]