cod*_*441 34 android android-viewpager
我理解我能给出的最低数字setOffscreenPageLimit(int)是1.但我需要一次加载一页因为内存问题.
我将不得不使用旧式tabhost等?或者有没有办法/黑客我可以让我的viewPager一次加载一页?
我的适配器使用ViewHolder patern扩展BaseAdapter.
Ron*_*kar 32
我遇到了同样的问题,我找到了解决方案:
脚步:
1)首先下载CustomViewPager从类此链接.
2)使用如下所述的类:
在Java中:
CustomViewPager mViewPager;
mViewPager = (CustomViewPager) findViewById(R.id.swipePager);
mViewPager.setOffscreenPageLimit(0);
Run Code Online (Sandbox Code Playgroud)
在XML中:
<com.yourpackagename.CustomViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swipePager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Run Code Online (Sandbox Code Playgroud)
现在只能一次加载一个页面.
PS:根据问题的要求,我已经发布了解决方案Viewpager.我还没试过同样的TabLayout事情.如果我找到任何解决方案,我会更新答案.
Phi*_*oda 17
据我所知,使用ViewPager时无法做到这一点.至少不是,当您希望您的页面可以刷卡时.
因此解释非常简单:
当您在两个页面之间滑动时,当两个页面都需要可见时,有一个点,因为当其中一个页面之一甚至不存在时,您无法在两个页面之间滑动.
有关更多信息,请参阅此问题:ViewPager.setOffscreenPageLimit(0)无法按预期工作
CommonsWare在他的回答评论中提供了很好的解释.
Com*_*are 11
但我需要一次加载一页因为内存问题.
这假设你得到了OutOfMemoryErrors.
我将不得不使用旧式tabhost等?
是,或FragmentTabHost,或操作栏标签.
或者有没有办法/黑客我可以让我的viewPager一次加载一页?
不,因为ViewPager滑动动画一次需要多个页面的简单原因.你可以通过使用ViewPager和滑动来看到这一点.
或者,您可以修复您感知到的内存问题.假设这个应用程序与您今天早些时候报告的应用程序相同,那么您只使用7MB的堆空间.OutOfMemoryError如果您的剩余堆高度分散,那只会导致s.有内存管理策略(例如,inBitmap在BitmapOptions创建从外部源位图)能够帮助解决这种碎片化的担忧.
我的适配器使用ViewHolder patern扩展BaseAdapter.
BaseAdapter是用于AdapterView,而不是ViewPager.
小智 6
我对此有一个答案。上面所说的 setUserVisibleHint() 方法已被弃用,您可以使用 setMaxLifecycle() 方法。要仅加载可见片段,您必须在 viewpager 适配器中将行为设置为BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT 。IE; 在构造函数中。为了处理片段,请使用片段中的 onResume() 方法。
通过这种方式,您一次只能在 viewpager 中加载一个片段。
public static class MyAdapter extends FragmentStatePagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
return ArrayListFragment.newInstance(position);
}
Run Code Online (Sandbox Code Playgroud)
}
在科特林中:
class MyAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm,BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT )
Run Code Online (Sandbox Code Playgroud)
也以同样的方式使用 with FragmentPagerAdapter(现已弃用)
| 归档时间: |
|
| 查看次数: |
45053 次 |
| 最近记录: |