【发布时间】:2016-02-27 17:49:29
【问题描述】:
我将 Google 支持库更新为 rev。 23.2.0。而ViewPager 变成了显示错误的页面浏览量。
ViewPager 使用自定义页面转换器:
private class ZoomOutPageTransformer implements ViewPager.PageTransformer {
private static final float MIN_SCALE = 0.85f;
private float mCenterOffset;
private boolean mIsFixedCenterOffset = false;
public void transformPage(View view, float position) {
final int pageWidth = view.getWidth();
final int pageHeight = view.getHeight();
if(!mIsFixedCenterOffset) {
mCenterOffset = position;
mIsFixedCenterOffset = true;
}
position -= mCenterOffset;
if (position <= 1) {
final float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
final float vertMargin = pageHeight * (1 - scaleFactor) / 2;
final float horzMargin = pageWidth * (1 - scaleFactor) / 2;
if (position < 0) {
view.setTranslationX(horzMargin - vertMargin / 2);
} else {
view.setTranslationX(-horzMargin + vertMargin / 2);
}
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);
}
}
}
并且有页边距:
ViewPager viewPager = (ViewPager) v.findViewById(R.id.vpDaySlider);
mAdapter = new DayPagerAdapter(getActivity(), fm, mWeekNumber);
viewPager.setAdapter(mAdapter);
viewPager.addOnPageChangeListener(this);
viewPager.setPageTransformer(false, new ZoomOutPageTransformer());
Point display = SettingsManager.getDisplaySize(getContext());
final int padding = (int)(display.x * 0.1);
viewPager.setPageMargin(padding);
现在,它如下所示:
我什至不知道错误在哪里......如何修复它?我需要页面填充父空间并仅在滚动时缩小。
LogCat 中的警告:
W/FragmentManager:moveToState:DayFragment{24ec179 #2 id=0x7f0c00b4} 的片段状态未内联更新;找到预期状态 3 2
添加
我意识到这是一个多么大的错误。 ZoomOutPageTransformer 固定页面的第一个位置。它必须为 0 或接近于零,但在更新位置 > 1 的第一个值(例如我的手机上的 1.1)后,但下一个(第二个)值是实际页面位置(对于我的手机:0)。
因为发生了什么?我认为这是ViewPager的错误行为。
【问题讨论】:
-
将您的问题标记为已解决!
标签: android android-viewpager android-support-library