Articles of android viewpager

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 […]

在ViewPager中dynamic跳过页面

我有一个通过FragmentStatePagerAdapter持有Fragment的ViewPager 。 假设寻呼机最初拥有以下页面( Fragment s): A – B – C – D 当用户滑动时,他可以从A移动到B , B移动到C等等。但是有些情况下,当用户改变A页面上的某些选项时,他可以移动到B ,但是C : A – C – D 然后用户回到A ,修改一些东西,并重新启用B : A – B – C – D 我怎样才能达到这个非常dynamic的行为? 当用户改变某些东西,然后重新填充ViewPager ,我不能添加Fragment ,因为它很慢,打破了stream程。

FrameLayout.onMeasure()中的NullPointerException

编辑:我创build了一个Github项目,崩溃的方式和我的应用程序完全相同。 你可以在这里find它 编辑:正如我debugging了这一点,并尝试各种更改,我意识到我张贴的原始代码并不真正相关,所以我删除了它: 我有一个Activity ,可以切换3个不同的Fragment之间,当用户按下3个IconButton的一个,我已经插入到自定义布局的ActionBar中,就像在各种模式之间切换: 当我第一次启动应用程序(卸载它),我默认为全球模式。 Globe模式在ViewPager有几个片段,大多数片段是android.support.v4.app.ListFragment子类。 我在主Activity的onCreate方法中创build了所有8个选项卡。 这按预期工作,一切正常加载。 当我进入“个人档案”模式(通过点击脸部图标button),我可以login到应用程序,并看到我的个人资料。 这也按预期工作,一切正常加载。 当我再次从Android Studio 推送APK时 ,由于我现在已经login(已保存的首选项),因此默认为“好友进纸”模式(双手持握)。 我可以切换模式到configuration文件,一切都按预期工作,但是当我切换到地球模式时,它在Android代码崩溃: 08-14 14:43:22.744 28804-29323/com.trover E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.trover, PID: 28804 java.lang.NullPointerException at android.widget.FrameLayout.onMeasure(FrameLayout.java:309) at android.view.View.measure(View.java:16497) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327) at android.view.View.measure(View.java:16497) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291) at android.view.View.measure(View.java:16497) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1912) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1109) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1291) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:996) at […]

Android TabPage Indicator内容包装问题

我遇到过ViewPager的另一个问题,现在我无法用我目前的知识来解决这个问题。 我有TabPageIndicator与ViewPager和每个选项卡上,我正在显示文本。 这是简单的textView: <?xml version="1.0" encoding="utf-8"?> <view xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" class="viewpagerindicator.TabPageIndicator$TabView" > <TextView android:id="@+id/vpi_tab_text" android:layout_width="fill_parent" android:layout_height="fill_parent" android:singleLine="true" android:ellipsize="marquee" android:gravity="center" android:paddingBottom="10dip" android:paddingLeft="8dip" android:paddingRight="8dip" android:paddingTop="10dip" android:textColor="@drawable/vpi_tab_text_color" android:typeface="serif" /> </view> 我希望选项卡中的文本始终是单行,并且始终是整个文本,而不是椭圆化,不打包,不超过1行。 用户需要能够读取整个… 但是我不能这样做,我尝试了不同的选项,但仍然遇到一些问题 – 文本不仅仅是一行,而且只显示第一行,或者只显示一部分文本。 你有类似的经历吗? 任何帮助表示赞赏 编辑一: 我相信问题在这里: @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { final int widthMode = MeasureSpec.getMode(widthMeasureSpec); final boolean lockedExpanded = widthMode == […]

我怎样才能实现水平滑动不使用支持库?

如果我不需要授予对老版本android的支持,并且只能使用API​​ 17,那么是否有另一种方法来实现广告的水平滑动(如在Gmail中)而不使用viewpager,fragmentactivities(新的API已经有片段)。 ..)等摆脱支持库? 所有我发现的水平滑动教程显示如何使用支持库和FragmentActivities。 否则,如果我不能使用他们的本地类和方法,新API的优点是什么?

如何在RecyclerView中保留ViewPager状态?

我的RecyclerView包含许多ViewPagers。 每个ViewPager内的页面数量是不变的(2)。 我使用PagerAdapter。 当我滚动我的RecyclerView,ViewPagers失去了他们的状态,并重置到第1页。 我想知道如何保留每个ViewPager的最后select的页面。 例如:1)我滚动到页面2在我的第一个ViewPager 2)我滚动RecyclerView到底部,我的第一个ViewPager出屏幕。 3)我滚动到ViewPager的顶部,所以我的第一个ViewPager再次加载。 4)我的第一个ViewPager设置为第一页,而不是页面2,我最后滚动到。 在RecyclerView中有n个ViewPagers,我想保留所有的状态,不pipeRecyclerView是否重装。 如何解决这个逻辑?

深度寻呼变压器就像SnapChat一样

我试图与DepthPageTransformer一样实施ViewPager就像Snapchat应用程序。 在SnapChat应用程序中,有一个摄像头屏幕始终在ViewPager中心,从左或右滑动将其他片段带到摄像头屏幕上。 我从这个链接find了DepthPageTransformer代码。 但是这个演示的问题在于它从后面带来了所有的下一个屏幕视图。 就像SnapChat我有一个相机屏幕在中心,两个屏幕在左上方,两个屏幕从右上angular在相机屏幕上。 那么,我该如何创build一个PageTransformer ,它会在我的中心屏幕的顶部(这是Camera)的左侧或右侧带来碎片?

带指示器的ViewPager,没有Android的支持库

现在,我正在使用ViewPagerIndicator在我的程序中使用指示器进行轻扫,并且它像魅力一样工作。 但是,由于Google正在向Fragments的方向推进越来越多,而不使用Android支持库,并且PreferenceFragments在支持库中不可用,所以我想知道是否有类似于使用标准Android库的ViewPagerIndicator。