4

I have a ViewPager with a Listener:

viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int arg0) {

        }

        @Override
        public void onPageScrolled(int position, float positionOffset,
                int positionOffsetPixels) {
            if (position == 0) {
                tv.setText("first Item");
            } else
                tv.setText(titleStringArray[position]);

        }

        @Override
        public void onPageScrollStateChanged(int arg0) {

        }
    });

What I need: tv is a TextView above the ViewPager, currently the text changes as soon as the user has moved the page (even very little movement is registered). I want to change the text ONLY if the page was moved to left or right by 50% or above. Any suggestions?

Droidman
  • 11,485
  • 17
  • 93
  • 141
  • it seems to me that you're trying to do some type of title on your pages. So why not use the PagerTitleStrip?? http://developer.android.com/reference/android/support/v4/view/PagerTitleStrip.html It could make a lot of stuff easier for you. Ps.: I'm posting as a comment because I'm aware that I'm not answering your question, but supplying possible alternatives. – Budius Feb 21 '13 at 12:35
  • Thanks. Yeah I know about the titleStrip, but my ViewPager is just 60dp x 200dp, so in that case that really doesn't matter if I use a TitleStrip or just a TextView – Droidman Feb 21 '13 at 13:11

1 Answers1

4

I solved as follows,

Initialize variable.

static int mPageLastScreen=0;

then add if statement in onPageScrolled method.

viewPager.setOnPageChangeListener(new OnPageChangeListener() 
                    {
                        public void onPageScrollStateChanged(int state) 
                        {}
                    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) 
                    {
                        if(mPageLastScreen!=position)
                        {
                            Log.d("page scrolled", "Page scrolled");
                            mPageLastScreen=position;
                        }
                     }

                    public void onPageSelected(int position) 
                    {}
                });

I know it is Late reply. Hope it helps someone:)

Amir
  • 1,066
  • 1
  • 13
  • 26