Articles of android viewpager

如何只让特定片段在CoordinatorLayout的ViewPager中滚动?

背景 我有一个viewPager,有3个片段和标签。 每个片段都有一个介绍阶段(自己的),没有任何可滚动的内容。 离开介绍阶段后,有一个recyclerView,用户可以滚动。 问题 我需要使用新的devise库,所以当滚动(只通过recyclerView),它会隐藏actionBar,让标签仍然显示。 当用户转到没有可滚动内容的片段时,actionBar应该重新出现,类似于“Google Play报亭”的内容。 事实上,我甚至很乐意拥有它们:只要你开始向左/向右滑动,重新显示操作栏。 事情是,如果我按照指导方针和样本,我有两个问题: 碎片的不可滚动阶段在底部被截断,就好像它可以滚动一样。 我无法find如何重新显示actionBar,并使其卡在那里,直到我切换到一个可滚动的内容(通过切换到另一个片段,或当当前片段的内容更改为一个可滚动的内容)。 我试过了 以下是活动的当前布局XML文件的简短片段: <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.CoordinatorLayout android:id="@+id/activity_main__coordinator" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:id="@+id/activity_main__appBarLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:theme="?attr/actionBarTheme"> <android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:layoutDirection="ltr" android:theme="?attr/actionBarTheme" app:layout_scrollFlags="scroll|enterAlways|snap" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" tools:ignore="UnusedAttribute"/> <android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" app:tabGravity="fill" app:tabIndicatorColor="#FFffffff" app:tabIndicatorHeight="3dp"/> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> <include layout="@layout/fabs"/> </android.support.design.widget.CoordinatorLayout> […]

dynamic更新TabLayout而不更改选定的选项卡

我想用Material Design Support库实现一个向导。 我正在使用ViewPager和Tablayout但我有问题dynamic添加新标签。 首先,我在onCreate方法中设置我的小部件: viewPager = (ViewPager) findViewById(R.id.tab_viewpager); tabLayout = (TabLayout) findViewById(R.id.tab_layout); adapter = new ViewPagerAdapter(getSupportFragmentManager()); adapter.addFrag(new DummyFragment(), "1"); adapter.addFrag(new DummyFragment(), "2"); viewPager.setAdapter(adapter); tabLayout.setupWithViewPager(viewPager); 然后我想添加另一张牌,当点击列表中的一个元素时: adapter.addFrag(new DummyFragment(), "3"); adapter.notifyDataSetChanged(); tabLayout.setTabsFromPagerAdapter(adapter); 问题是:添加之后,选定的卡被重置为第一个。 如何防止这种行为?

ViewPager转换的PageCurlanimation?

下面是页面curlanimation的示例: http : //www.youtube.com/watch?v=aVZHN_o45sg 有几个页面curlanimation库: https://github.com/harism/android_page_curl https://github.com/MysticTreeGames/android-page-curl 他们打算使用位图可绘制而不一定是ViewGroups。 如果想知道是否有人提出了ViewPagers类似的页面curl转换。

2 ViewPager不能在Android 2.3中滚动

我在我的应用程序中使用导航抽屉,其中包含一些碎片,就像下面的图片。 每个片段包含另一个ViewPager是一个ImageSlider,下面是一个ListView,在顶部我使用SwipeRefreshLayout。 我的问题是图像滑块适用于Android版本3.0或更高版本的设备,但向左或向右滑动不能在设备2.3和更低版本上运行,而是调用父ViewPager的滑动,即导航片段。 为此,我正在使用支持第4版的库来支持低于3.0的设备。 所有function在2.3设备上运行良好,除了一个。 我GOOGLE了,但我没有find任何帮助。 所以为了让它滚动,我应该为此做什么,任何想法/帮助将不胜感激。

位于ViewPager中的Fragment中的Android RecyclerView在到达setOffscreenPageLimit时不会重新加载/刷新视图

我有一个Fragment的RecyclerView再次在ViewPager ,当我在ViewPager页面之间滑动时,我看到onDetach of Fragment被调用,但由于某种原因RecyclerView仍然存在于ViewPager Fragment特定位置,即使是当我回到分离的片段时, RecyclerView滚动位置被保留。 我为ViewPager使用FragmentStatePagerAdapter ,我从getItemPosition()返回POSITION_NONE ,但它没有效果。 请帮我理解这里的问题。

与ViewPager和RecyclerView错误

我在ViewPager的第一个片段中使用了带有RecyclerView的ViewPager。 当我从左向右滚动时,没有错误。 但是,当我从右向左滚动(从ViewPager的#1片段#2)时,出现以下错误: 05-10 20:21:07.546 20002-20002/com.graffiti75.android.worldremit E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.graffiti75.android.worldremit, PID: 20002 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.support.v7.widget.RecyclerView$LayoutManager.canScrollHorizontally()' on a null object reference at android.support.v7.widget.RecyclerView.onInterceptTouchEvent(RecyclerView.java:1819) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1960) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049) […]

MultiViewPager + ZoomOutPageTransformer无法正常工作

我试图实现viewpager使用MultiViewPager和使用谷歌的zoomoutpageTransformer作为效果,目的是实现这样的形象: 但是我无法左右显示这两个页面,每次我在屏幕中间获得一个页面! 这是我查看传呼机的代码: mViewPager.setPageMargin( -64); mAdapter = new ViewPagerAdapter(getActivity(), mClasses); mViewPager.setPageTransformer(true, new ZoomOutPageTransformer()); mViewPager.setAdapter(mAdapter); 这是我在xml中的viewpager: <ir.phzrobin.Utils.MultiViewPager android:id="@+id/viewPager" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_margin="20dp" app:matchChildWidth="@+id/textview_class_title" > </ir.phzrobin.Utils.MultiViewPager> 这是我的viewpager页面布局: <TextView android:id="@+id/textview_class_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerVertical="true" android:layout_centerHorizontal="true" android:layout_gravity="top" android:layout_margin="5dp" android:gravity="center_horizontal" android:padding="10dp" android:text="fsafjabf" android:textAlignment="gravity" android:textColor="@color/white" android:textSize="17sp" /> <TextView android:id="@+id/textview_class_teacher" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/textview_class_title" android:layout_centerVertical="true" android:layout_margin="5dp" android:gravity="center_horizontal" android:padding="10dp" android:text="fsafjabf" android:textAlignment="gravity" android:textColor="@color/white" android:textSize="17sp" /> <ImageView […]

ViewPager刷卡不适用于RecyclerView

我想实现一个简单的滑动导航使用ViewPager与片段,持有和pipe理RecyclerView。 碎片被创build并且可以使用setCurrentItem()来切换,但是你不能左右切换页面。 ViewPager似乎忽略任何滑动手势。 我的活动布局: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="?attr/actionBarSize"/> <android.support.v7.widget.Toolbar … /> </FrameLayout> 我使用FragmentPagerAdapter在我的onCreate()填充ViewPager,如下所示: viewPager = (ViewPager) findViewById(R.id.viewPager); viewPager.addOnPageChangeListener(this); viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { switch (position) { case 0: return new Dummy2Fragment(); case 1: return new Dummy2Fragment(); default: return null; } } @Override public int getCount() […]

ViewPager中的片段button触发onClickListener错误的引用

对不起我的哑巴标题,我将在下面清楚地说明: 情况 我有一个ViewPager ,里面有4个OnBoardingFragment 。 每个Fragment都具有完全相同的布局,从相同的XML文件inflated 。 这个布局包含一个我称之为btnNext的Button ,并且为它设置了OnClickListener 。 函数getItem我的PagerAdapter @Override public Fragment getItem(int position) { String title, description, button; int resource; boolean end = false; switch (position) { case 0: title = context.getString(R.string.on_boarding_title_1); description = context.getString(R.string.on_boarding_description_1); resource = R.drawable.on_boarding_bg_0; button = context.getString(R.string.on_boarding_button_1); break; case 1: title = context.getString(R.string.on_boarding_title_2); description = context.getString(R.string.on_boarding_description_2); resource = […]

Fragment和FragmentStatePagerAdapter中的ViewPager片段导致exception(具有完整的示例)

我有一个ViewPager简单的片段。 我正在使用最新的支持库v4 rev18! 如果我第一次显示子片段,一切正常,如果我回去再次显示,应用程序崩溃,但有以下例外: 我有一个完整的例子显示,当下面的exception发生时: java.lang.NullPointerException at android.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:569) at android.support.v4.app.FragmentStatePagerAdapter.restoreState(FragmentStatePagerAdapter.java:211) at android.support.v4.view.ViewPager.onRestoreInstanceState(ViewPager.java:1281) at android.view.View.dispatchRestoreInstanceState(View.java:12043) at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2688) at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2694) at android.view.View.restoreHierarchyState(View.java:12021) at android.support.v4.app.Fragment.restoreViewState(Fragment.java:425) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:949) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4800) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565) at dalvik.system.NativeStart.main(Native Method) 我可以以任何其他方式在子片段中使用ViewPager,但是如果我手动添加/删除子片段并在子片段中使用FragmentStatePagerAdapter,则无法工作。 下面的例子应该工作,但它不…我已经添加了一些解决了一些问题的代码,但它并没有解决所有问题… import […]