Articles of android viewpager

用片段replaceViewPager – 然后回溯

我有一个活动,最初托pipe一个ViewPager,连接到一个FragmentPagerAdapter。 当用户点击ViewPager的子片段中的一个项目时,我正在使用FragmentTransaction来将一个空的容器视图replace为一个我想要导航到的新Fragment。 如果我在事务上使用addToBackStack(),提交事务,然后导航回来,我不返回到ViewPager的视图(初始布局)。 如果我不在事务上使用addToBackStack(),请提交事务并返回,应用程序将退出。 看来显然,ViewPager没有被添加到后台堆栈(这并不令人惊讶,因为它本身不是一个片段)。但是我认为默认行为是后退将我带回到那个活动的初始查看(ViewPager)。 根据我读过的内容,似乎可能是因为片段事务正在发生,ViewPager或PagerAdapter会丢失应显示哪个片段的轨道。 我真的很困惑,但我最终创造了一大堆代码覆盖onBackPress和显示和隐藏viewpager视图。 我会认为有一个更简单的方法来使用默认行为来执行适当的导航。 TL;博士 A是Viewpager托pipe的片段。 B是一个新的片段。 当我用BreplaceA,然后按回,我期望回到A,但是这没有发生。 任何意见将不胜感激。 码: 主要活动: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); headingLayout = (RelativeLayout) findViewById(R.id.headingLayout); headingLayout.setVisibility(View.GONE); // Set up the ViewPager, attaching the adapter and setting up a listener // for when the // user swipes between sections. mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setPageMargin(8); […]

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

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

屏幕方向更改后,从ViewPager的适配器中销毁项目

所以我在屏幕方向改变之后从ViewPager销毁(移除)一个页面时遇到问题。 我会尝试在下面的行中描述这个问题。 我使用FragmentStatePagerAdapter作为ViewPager的适配器,并使用一个小的界面来描述无限的视图寻呼机应该如何工作。 它背后的想法是,你可以滚动到右侧,直到你到达ViewPager 。 如果您可以从API调用中加载更多结果,则会显示一个进度页面直到结果出现。 一切都很好,直到现在,问题来了。 如果在这个加载过程中,我旋转屏幕(这不会影响基本上是AsyncTask的API调用),当调用返回时,应用程序崩溃给我这个exception: E/AndroidRuntime(13471): java.lang.IllegalStateException: Fragment ProgressFragment{42b08548} is not currently in the FragmentManager E/AndroidRuntime(13471): at android.support.v4.app.FragmentManagerImpl.saveFragmentInstanceState(FragmentManager.java:573) E/AndroidRuntime(13471): at android.support.v4.app.FragmentStatePagerAdapter.destroyItem(FragmentStatePagerAdapter.java:136) E/AndroidRuntime(13471): at mypackage.OutterFragment$PagedSingleDataAdapter.destroyItem(OutterFragment.java:609) 在库的代码中挖了一点后,似乎在这种情况下,片段的mIndex数据字段小于0 ,这引发了这个exception。 这是寻呼机适配器的代码: static class PagedSingleDataAdapter extends FragmentStatePagerAdapter implements IEndlessPagerAdapter { private WeakReference<OutterFragment> fragment; private List<DataItem> data; private SparseArray<WeakReference<Fragment>> currentFragments = new SparseArray<WeakReference<Fragment>>(); private ProgressFragment progressElement; private boolean […]

你如何获得ViewPager for Android的当前页码?

我想知道ViewPager的当前页面位置。 我创build一个适配器并将此适配器设置为ViewPager 。 现在我想知道当前页面编号或当前视图的位置,因为我想在该特定页面上启动一些额外的事件。 我用viewPager.setCurrentItem(1); 设置第一项。 有没有类似的方法来获取当前页面?

不显示Viewpager初始片段中的操作项目

在我正在开发的应用程序中,我使用了带有片段的ViewPager,并且每个片段构造了独立于ViewPager中所有其他片段的菜单。 问题是,有时由ViewPager默认初始化(即处于初始状态)的片段没有将其项目填充到操作项目菜单中。 更糟糕的是,这个问题只是间歇性地发生。 如果我滑过ViewPager足够多,以便碎片被迫重新初始化它们,当我向后滑动时,菜单正确填充。 活动代码: package net.solarnz.apps.fragmentsample; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.os.Bundle; import android.support.v13.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; public class FragmentSampleActivity extends Activity { private ViewPagerAdapter mViewPagerAdapter; private ViewPager mViewPager; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); if (mViewPagerAdapter == null) { mViewPagerAdapter = […]

如何更改SlidingTabLayout的文本颜色?

我做了一个使用ActionBarCompat的应用程序 我使用SlidingTabLayout类创build了选项卡。 这个class是这样的: SlidingTabLayout.java 但我不能改变标签的颜色… 我的viewpager片段是这样的: <swmovil.fyb.SlidingTabLayout android:id="@+id/mTabs" android:layout_width="match_parent" android:layout_height="48dip" /> <android.support.v4.view.ViewPager android:id="@+id/mPager" android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="1" android:background="@color/white" /> 该应用程序工程很好,但我不能改变标签的颜色文字 … 看到下面的例子后我做了应用程序: rudsonlive /导航抽屉ViewPager-ActionBarCompat 我怎样才能改变标签文本的文字颜色? 谢谢 !!!

具有页面指示器的Android视图寻呼机

我需要在视图页面文件中使用图像来获取页面指示符。 这是我的代码。 public class IndicatorActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MyPagerAdapter adapter = new MyPagerAdapter(); ViewPager myPager = (ViewPager) findViewById(R.id.pager); myPager.setAdapter(adapter); myPager.setCurrentItem(0); TitlePageIndicator indicator = (TitlePageIndicator)findViewById(R.id.indicat); indicator.setViewPager( myPager ); } } 在这段代码中,我在TitlePageIndicator indicator = (TitlePageIndicator)findViewById(R.id.indicat);find错误TitlePageIndicator indicator = (TitlePageIndicator)findViewById(R.id.indicat); 因为TitlePageIndicator cannot […]

如何testing片段视图对用户是否可见?

我有一个ViewPager,每个页面是一个片段视图。 我想testing一个片段是否在可见区域。 Fragment.isVisible唯一的testing 该片段被附加到一个活动 该片段设置为可见 该片段已被添加到视图 ViewPager将创build3个(默认)片段,并且它们全部三个满足上述标准,但是只有一个实际上对于用户(人眼 )是可见的,

如何销毁FragmentStatePagerAdapter中的旧片段

我想实现这个: 我使用带有FragmentStatePagerAdapter的ViewPager。 我从这个页面的例子开始: http://developer.android.com/reference/android/support/v4/app/FragmentStatePagerAdapter.html 这是我的ViewPager适配器: public static class MyAdapter extends FragmentStatePagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return NUM_ITEMS; } @Override public Fragment getItem(int position) { return ArrayListFragment.newInstance(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { super.destroyItem(container, position, object); } } 我的ViewPager的每一页都包含一个带有一些数据的ListView。 在ViewPager切换到新页面的那一刻,它将非常快地增加RAM内存。 我应该如何删除旧的碎片? 我也使用这个,但它什么都不做: public […]

我们如何解决PagerTitleStrip和PagerTabStrip中的空白标题?

PagerTitleStrip和PagerTabStrip与support-v4(版本23.0.0)存在问题。 使用PagerTitleStrip或ViewPager时, PagerTitleStrip的标题视图和support-v4库的版本23.0.0(用于Marshmallow / Android 6.0支持)无法正确呈现。 通过以下url追踪并计划发布问题: https : //code.google.com/p/android/issues/detail ? id = 183127 https://code.google.com/p/android/issues/detail?id = 184715 更新:现在已经解决了,在23.1.0。