android - Viewpager 检测第一个和最后一个位置

标签 android android-layout android-viewpager

我有一个带有左右箭头的viewpager。我想在 ViewPager 的第一个位置时隐藏左箭头,在 ViewPager 的最后一个位置可见时隐藏右箭头。

我已经提到了这个解决方案:How to get position of first and last position of viewpager?

在我的 View 寻呼机中,我一次有 3 个可见页面。为此,我将 getPageWidth 设置为 0.33f :

enter image description here

但它并没有像我预期的那样工作。

我的代码:

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/

相关文章:

android - 在哪里恢复 ViewPager 内部的 fragment 状态

java - 使用 Asynctask 在 Android 中显示 ProgressBar

android - 如何为 libusb android 应用程序授予/dev/bus/usb 权限?

android - 从 FragmentPagerAdapter 动态添加和删除 fragment

java - 软键盘切断了我的 EditText/TextInputEditText 控件的底部

android - 背景图片崩溃android

android - 使用 Robolectric 3.2.1 进行 UT 时未绘制 fragment 中的 ViewPager

android - MotionLayout 忽略填充

java - 尝试从 JSON 数组将数据插入数据库

android - 如何用android中图像下方的内容填充空白空间