本文介绍了如何获取viewpager的第一个和最后一个位置?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在ViewPager的第一个位置时隐藏左箭头,而在ViewPager的最后一个位置时隐藏右箭头。然后,我也想用(5/30)这样的TextView显示当前页码。 5是当前页码,30是总页码。谢谢你先生。

I want to hide left arrow when the first position of a ViewPager and hide right arrow when the last position of a ViewPager. And then , I also want to show current page number with TextView like (5/30). 5 is current page number and 30 is total page number. Thank You Sir.

这是我的代码;

mPager.beginFakeDrag();
leftNav = (ImageButton) findViewById(R.id.left_nav);
rightNav = (ImageButton) findViewById(R.id.right_nav);
txt_count = (ImageButton) findViewById(R.id.txt);

int tab = mPager.getCurrentItem();
if (tab == 0){
    leftNav.setVisibility(View.GONE); // hide all position :(
}

leftNav.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        int tab = mPager.getCurrentItem();
        if (tab > 0) {
            tab--;
            mPager.setCurrentItem(tab);
        } else if (tab == 0) {
            mPager.setCurrentItem(tab);
        }
    }
});

rightNav.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        int tab = mPager.getCurrentItem();
        tab++;
        mPager.setCurrentItem(tab);
    }
});


推荐答案

如下所示添加onPageChangeListener

Add onPageChangeListener as shown below

 mPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                    @Override
                    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

                    }

                    @Override
                    public void onPageSelected(int position) {
                       if (position == (mPager.getAdapter().getCount() - 1)) {
                            rightNav.setVisibility(View.GONE);
                       } else {
                            rightNav.setVisibility(View.VISIBLE);
                       }

                       if (position == 0) {
                            leftNav.setVisibility(View.GONE);
                       } else {
                            leftNav.setVisibility(View.VISIBLE);
                       }
                    }

                    @Override
                    public void onPageScrollStateChanged(int state) {

                    }
                });

您的左侧点击监听器&右箭头按钮

Your Click listener for left & right arrow buttons

 leftNav.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mPager.getAdapter() != null && mPager.getAdapter().getCount() != null && mPager.getCurrentItem() != 0) {
                    mPager.setCurrentItem(mPager.getCurrentItem() - 1);
                }
            }
        });
        rightNav.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mPager.getAdapter() != null && mPager.getAdapter().getCount() != null && mPager.getCurrentItem() != (mPager.getAdapter().getCount() - 1)) {
                    mPager.setCurrentItem(mPager.getCurrentItem() + 1);
                }
            }
        });

这篇关于如何获取viewpager的第一个和最后一个位置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-21 09:34