ViewPager会预加载片段。
但是在pageWidth = 0.5(每个屏幕2个片段)的情况下,我认为它在当前位置之前加载了太多视图...
我有pageLimit=1
和pageWidth=0.5
。
可以预加载LEFT1和LEFT2,但是为什么要使用LEFT3?
LEFT3不在下一个左屏幕上...
我试图从支持v4理解ViewPager.java:
https://android.googlesource.com/platform/frameworks/support/+/support-library-27.1.1/core-ui/src/main/java/android/support/v4/view/ViewPager.java#1155
第1155行,
//填满可用宽度的3倍或不超过屏幕外的数量
//请求到任一页面的页面,以较大者为准。 但是对于每个屏幕多个片段,它在当前位置之前和之后的当前位置加载的更多。
使用Google示例项目https://github.com/googlesamples/android-SlidingTabsBasic/
添加
protected void onCreate(Bundle savedInstanceState) {
[...]
mViewPager.setCurrentItem(25);
@Override
public float getPageWidth(int position) {
// 2 fragments per screen
return .5f;
}
@Override
public int getCount() {
// 50 fragments
return 50;
}
public Fragment getItem(int position) {
[...]
Log.d("debugpageviewer", "position="+position);
}
它会加载7个片段(当前位置之前的3个片段)。 pageWidth越小,之前加载的片段越多。
那么,这是一个错误还是我错过了什么?
答案 0 :(得分:0)
尝试使用onCreate方法在ViewPager上调用setOffscreenPageLimit()
。
例如mViewPager.setOffscreenPageLimit(2)
将确保始终保留不超过3个片段:当前的一个和两个相邻的片段。