Articles of android viewpager

带有工具栏和TabLayout的ViewPager的高度错误

我在AppBarLayout下面有一个ViewPager(带有工具栏和TabLayout)。 我无法理解为什么加载的片段的高度超过可用空间,即使没有这么大的元素,使标签可滚动。 这是主要的布局xml: 正如你在我的Fragment中看到的那样,我有一个带有layout_alignParentBottom的按钮,但我猜它正在拉伸viewpager的高度太多。 这里是设计视图的布局:

保存/恢复片段状态android

我正在尝试创建一个使用Jack Wharton的ViewPager库( 此处 )的应用程序,仅使用每个页面的图像(类似于Prixing( 此处 )主屏幕)。 一切正常,除了片段中的saveInstance。 在Jack Wharton的例子中,他将文本存储在名为mContent的Stringvariables中,并在onCreate中恢复它,但在我的情况下,我该怎么办? 保存/恢复位图?! 任何客观的答案将不胜感激! 我对使用应用程序的Fragment很新,因为我看到的每一个例子,只提供了基础知识,而且对于更复杂的问题,它变得越来越困难。 PS。 如果有用的知道,我正在使用CirclePageIndicator。 目前的片段代码: public final class SpecialOfferFragment extends Fragment { private int imageResourceId; public static SpecialOfferFragment newInstance(int i) { //probably I’ll use a bitmap(downloaded) as parameter instead of using static images SpecialOfferFragment fragment = new SpecialOfferFragment(); fragment.imageResourceId = i; return fragment; } @Override […]

在ViewFlipper或ViewPager中滑动图像

我想一次显示一张图片。 在滑动时,我想用滑动效果更改我的图像。 我读到了ViewPager和ViewFlipper。 我甚至有一个使用ViewFlipper这样做的例子。 只需要正确解释ViewFlipper的使用位置以及ViewPager的使用位置。 在我看来,当你想要扫描一堆具有某些function的片段而不是只是刷一些图像时,更有可能使用ViewPager。 但是,如果有人认为应该使用ViewPager而不是ViewFlipper只是为了扫描一堆图像,请简要说明原因? 为什么一个人应该使用ViewPager而不是ViewFlipper。 哪一个应该更有效率? 那么这两个目的是什么? 你能举例说明(代码)刷图像吗?

动态设置ViewPager高度

我试图将ViewPager放在不同高度的不同碎片上。 我知道wrap_content不能与ViewPager一起使用,所以我试图以dinamically方式设置寻呼机高度。 我在页面侦听器中设置寻呼机高度: … indicator.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int selected) { final View view = fragments[selected].getView(); if (view != null) { pager.setLayoutParams(new LayoutParams( LayoutParams.MATCH_PARENT, view .getMeasuredHeight())); } } 不幸的是它没有用,因为在Fragment上由getMeasuredHeight()返回的值是错误的。 我究竟做错了什么?

使用支持库v4修订版11的嵌套片段

今天早上支持库的最新版本( Android Support Package v4修订版11 )应该支持嵌套片段。 在我的项目中,我有一个包含ViewPager的片段,这个ViewPager包含几个片段。 我正在调用getSupportFragmentManager()而不是getFragmentManager来使用支持库的FragmentManager 。 问题是我仍然遇到崩溃,如: java.lang.IllegalStateException: Recursive entry to executePendingTransactions at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416) at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461) at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141) at android.support.v4.view.ViewPager.populate(ViewPager.java:1012) at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:523) at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:495) at android.support.v4.view.ViewPager.onRestoreInstanceState(ViewPager.java:1221) at android.view.View.dispatchRestoreInstanceState(View.java:11910) at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2584) at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2590) at android.view.View.restoreHierarchyState(View.java:11888) at android.support.v4.app.Fragment.restoreViewState(Fragment.java:417) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:933) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) […]

多个viewpage的滚动效果

我有一个观点的概念。 请指导我如何实现它。 请检查线框。 我已经看过FadingActionBar,但它似乎没有帮助。 问题是我在屏幕上有多个viewpage,并且在尝试获得所需结果时没有。 如果我能够实现很酷的过渡/视差效果,那将是非常棒的。 任何输入将非常感激。 编辑1: 选项卡放在PagerTabStrip上,并与其下方的Viewpager连接。 这里的尝试是滚动视图并将PagerTabStrip停靠到ActionBar,然后向下滚动将其调低以显示ImageViewPager。

当使用PagerAdapter的getPageWidth时,Android ViewPager滚动问题只有一个项目

我有一个带有自定义PagerAdapter的ViewPager,它会覆盖方法getPageWidth返回0.3f,因此我可以在屏幕上显示多个页面,如以下博客中所示: http://commonsware.com/blog/2012/08/20/multiple-view-viewpager-options.html 在这种情况下,ViewPager开始为空,用户开始按要求填充页面(图像)。 图像从左到右填充。 一切正常,页面是动态创建的,当有多个图像时,很容易在它们之间滑动。 但是,实例化的页面少于三页时会出现问题。 从右侧(无内容)到左侧的轻扫手势会产生闪烁,页面从左向右交替移动,就像ViewPager试图将第一页向右移动但稍后转向其原始位置一样。 这在整个手势期间发生,并在离开手势时停止。 正如我所说,当有足够的页面覆盖整个屏幕宽度并且需要真正的滚动时,这不会发生。 有任何想法吗?

从下一个屏幕返回时,ViewPager数据丢失

我在我的应用程序中使用ViewPager,其中有三个选项卡; 我在片段中使用ViewPager。 现在我的问题是,我在加载应用程序时正确获取数据,但是当我进入下一页然后返回ViewPager时,数据丢失且标签不起作用。 请帮助我 以下是我的代码: import com.devpoint.rprtjobs.R; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTabHost; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.Toolbar; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.support.design.widget.TabLayout; public class MainActivity extends Fragment { // Declaring Your View and Variables Toolbar toolbar; ViewPager pager; SwipeViewPagerAdapter adapter; SlidingTabLayout tabs; CharSequence Titles[]={“OnGoing”,”UpComing”,”Expired”}; […]

未调用Android View onSaveInstanceState

我正在使用CustomView,它扩展了一些像FrameLayout这样的Android视图。 在我的布局中,我使用带有自定义PagerAdapter的ViewPager。 问题是当片段重新附加到ViewPager / Activity时,我的View 没有恢复它的状态 。 例如,我有三个片段,如果我滑到最后一个片段然后回到第一个片段,ScrollView就不是我允许的了:它返回默认值,在顶部。 我知道使用PagerAdapter,并非所有片段在同一时间都是活动的,基本上是+ 1 / -1。 我找不到为什么我的View.onSaveInstanceState()没有被调用,所以为onRestoreInstanceState。

FragmentPagerAdapter – 当用户转到新标签时如何检测滑动或标签点击?

我有一个MainActivity ,在FragmentPagerAdapter中有三个片段,如下所示。 如何通过滑动或单击选项卡,如何找出用户从第一个片段到第二个片段或从第二个片段到第二个片段的时间? 我看到getItem()方法不会被调用,因为我已经声明了mViewPager.setOffscreenPageLimit(2) ; public class MainThreeTabAdapter extends FragmentPagerAdapter { private final String[] CONTENT = new String[]{“News”, “Rewards”, “Me”}; public MainThreeTabAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { if (position == 0) { return NewsFragment.newInstance(); } else if (position == 1) { return RewardsFragment.newInstance(); } else if (position == 2) { […]