Viewpager通过按下按钮将图片从第1页更改为第2页,但不通过滑动

时间:2013-02-15 14:41:43

标签: android scroll imageview android-viewpager adapter

这是我在viewPager上的监听器:

viewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {
                pageNr.setText("page: " + (viewPager.getCurrentItem() + 1) + "/" + viewPager.getChildCount());
                currentSlide = viewPager.getCurrentItem();
                page = viewPager.getCurrentItem();
                viewPager.setAdapter(new SubcategoriesPagerAdapter(getActivity(), inflater, videos, numberOfPages));
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }

            @Override
            public void onPageScrollStateChanged(int arg0) {

            }
        });

这是我的按钮:

 nextBtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                goToNextSlide();
                pageNr.setText("page: " + (viewPager.getCurrentItem() + 1) + "/" + viewPager.getChildCount());
                if (categ == 2) {
                    numberOfPages = 2;
                }
                viewPager.setAdapter(new SubcategoriesPagerAdapter(getActivity(), inflater, videos, numberOfPages, categ));
            }
        });
        previousBtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                goToPreviousSlide();
                pageNr.setText("page: " + (viewPager.getCurrentItem() + 1) + "/" + viewPager.getChildCount());
                if (categ == 2) {
                    numberOfPages = 2;
                }
                viewPager.setAdapter(new SubcategoriesPagerAdapter(getActivity(), inflater, videos, numberOfPages, categ));
            }
        });
      private void goToNextSlide() {
        currentSlide = viewPager.getCurrentItem();
        page = viewPager.getCurrentItem();
        if (currentSlide < viewPager.getChildCount()) {
            viewPager.setCurrentItem(currentSlide + 1);
        }
    }

    private void goToPreviousSlide() {
        currentSlide = viewPager.getCurrentItem();
        page = viewPager.getCurrentItem();
        if (currentSlide > 0) {
            viewPager.setCurrentItem(currentSlide - 1);
        }
    }

现在,如果我按下一个或上一个按钮,它会更改页面,还会更改页面中的图片(我有9张图片,3x3图像视图矩阵) 当我滚动到第二页时,有时它会改变图片,有时它不会,而且viewpager也开始变得疯狂,有时候我不能回到第一页,从第二页开始,但是我可以滚动到右边,无限次,但每次显示第二页。我能做什么。或者是否可以使Viewpage不可滚动,所以我只能从按钮更改页面?

1 个答案:

答案 0 :(得分:0)

创建了一个自定义ViewPager,如下所示:

public class CustomViewPager extends ViewPager {

private boolean isPagingEnabled;

public CustomViewPager(Context context, AttributeSet attrs) {
    super(context, attrs);
    this.isPagingEnabled = true;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (this.isPagingEnabled) {
        return super.onTouchEvent(event);
    }

    return false;
}

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    if (this.isPagingEnabled) {
        return super.onInterceptTouchEvent(event);
    }

    return false;
}

public void setPagingEnabled(boolean b) {
    this.isPagingEnabled = b;
}
}