我有一个带有左右箭头的viewpager
。我想在 ViewPager 的第一个位置时隐藏左箭头,在 ViewPager 的最后一个位置可见时隐藏右箭头。
我已经提到了这个解决方案:How to get position of first and last position of viewpager?
在我的 View 寻呼机中,我一次有 3 个可见页面。为此,我将 getPageWidth 设置为 0.33f :
但它并没有像我预期的那样工作。
我的代码:
vpPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if (position == (vpPager.getAdapter().getCount())-1) {
right.setVisibility(View.INVISIBLE);
} else {
right.setVisibility(View.VISIBLE);
}
if (position == 0) {
left.setVisibility(View.INVISIBLE);
} else {
left.setVisibility(View.VISIBLE);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
在 XML 中,我为两个箭头设置了可见性。
任何帮助都将不胜感激。谢谢!
最佳答案
要找出 ViewPager 的当前页面,请使用 ViewPager.getCurrentItem()
这是一个代码示例
mViewPager.addOnPageChangeListener(new CustomViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
int currentItem = vpPager.getCurrentItem();
if (currentItem == (vpPager.getAdapter().getCount()-1)) {
right.setVisibility(View.INVISIBLE);
} else {
right.setVisibility(View.VISIBLE);
}
if (currentItem == 0) {
left.setVisibility(View.INVISIBLE);
} else {
left.setVisibility(View.VISIBLE);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
关于android - Viewpager 检测第一个和最后一个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48782739/