gpt4 book ai didi

Android ViewPager 适配器 - 每次都强制 getPageWidth

转载 作者:太空宇宙 更新时间:2023-11-03 11:07:57 25 4
gpt4 key购买 nike

我在 ViewPager 中有两个 fragment ,我的要求是第一次在第一个 fragment 中显示第二个 fragment 的某些部分,让用户知道还有一个页面。一旦用户滑动到下一页并返回到第一页,第一个 fragment 应该占据全屏(不仅仅是 90%)。所以我保留了一个标志来检查它是否是第一次并返回正确的 pageWidth -

public float getPageWidth(int position) {
if (position == 0 && isPatiallyShowNextItem) {
return 0.9f;
}
isPatiallyShowNextItem = false;
return 1f;
}

问题是 getPageWidth() 只被调用一次,第一个 fragment 总是只占据 90% 的屏幕,当用户滑动到下一个 fragment 时我如何强制 getPageWidth 或让第一个 fragment 占据 100% 的屏幕当用户之后移动到第二页。仅供引用 - 我在更改标志后尝试了以下调用,但没有任何效果!

pagerAdapter.notifyDataSetChanged();
viewPager.requestLayout();
viewPager.invalidate();

最佳答案

一种简单的方法是使用 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 上查看完整的使用文档

关于Android ViewPager 适配器 - 每次都强制 getPageWidth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30780374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com