2017-02-06 3 views
1

Я хочу скрыть левую стрелку при первой позиции ViewPager и спрятать стрелку вправо при последней позиции ViewPager. И затем я также хочу показать текущий номер страницы с помощью TextView (5/30). 5 - номер текущей страницы, а 30 - общий номер страницы. Спасибо, сэр.Как получить позицию первой и последней позиции viewpager?

Это мой код;

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); 
    } 
}); 

ответ

0

Добавить onPageChangeListener, как показано ниже

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) { 

        } 
       }); 

Вашего Click слушателя для левой & правых кнопок со стрелками

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); 
       } 
      } 
     }); 
+0

стрелка вправо does't шкурку на последней позиции – WPG

+0

@StevenLin проверить мой отредактированный ответ с левой и правой кнопок со стрелками выберите слушателю –

+0

отлаживать и сравнить положение, делает mPager.getAdapter(). GetCount(); верните правильный размер, если не используете yourArrayList.size(), чтобы получить то же самое –

1

Вы можете использовать:

viewPager.getCurrentItem() 

ViewPager.getAdapter().getCount() The getAdapter() method returns the object that supplies the pages for the ViewPager. 
0

Чтобы получить все количество страниц в ViewPager, используйте метод getAdapter в viewPager.getAdapter()

viewPager.getAdapter().getCount() 

Чтобы узнать текущую страницу из ViewPager использования ViewPager.getCuurentItem()

viewPager.getCurrentItem() 
0

Использование OnPageChangeListener

mPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
    public void onPageScrollStateChanged(int state) { 
    } 

    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
    } 

    public void onPageSelected(int position) { 
     if(position == 0) 
     { 
      // hide left nav 
     } 
     else if(position == mPager.getAdapter().getCount() - 1) // is last position 
     { 
      // hide right nav 
     } 
     else 
     { 
      // show all nav 
     } 
    } 
} 

Ссылка

Смежные вопросы