我在ViewPager中有两个片段,我的要求是第一次在第一个片段中显示第二个片段的某些部分,以便让用户知道还有一个页面。 一旦用户滑动到下一页并返回到第一页,第一个片段应该占据全屏(不仅仅是90%)。所以我保留了一面旗帜,以检查它是否是第一次,并返回右页宽度 -
public float getPageWidth(int position) {
if (position == 0 && isPatiallyShowNextItem) {
return 0.9f;
}
isPatiallyShowNextItem = false;
return 1f;
}
问题是getPageWidth()只被调用一次,第一个片段总是只占据屏幕的90%,当用户滑动到下一个片段时,如何强制getPageWidth,或者让用户第一个片段占用100%的屏幕之后移到第二页。 仅供参考 - 我在更改旗帜后尝试过以下电话,但没有任何效果!
pagerAdapter.notifyDataSetChanged();
viewPager.requestLayout();
viewPager.invalidate();
答案 0 :(得分:0)
一种简单的方法是使用ViewPager.PageTransformer。做这样的事情来实现90%的页面显示效果
public class PageRevealTransformer implements ViewPager.PageTransformer
{
@Override
public void transformPage(View page, float position)
{
int pageWidth = page.getWidth();
if (position < -.9)
{
// TODO: do something when this condition is certisfied
} else if (position <= .5)
{
float newPageWidth = pageWidth / 3;
page.setTranslationX(newPageWidth * -(position));
} else
{
// TODO: do something when this condition is certified
}
}
}
并适用于您的页面适配器
viewPager.setPageTransformer(true,new PageRevealTransformer());
了解你的逻辑,你很高兴。您还可以在http://developer.android.com/training/animation/screen-slide.html
上查看完整的使用文档