ViewPager set current page programmatically

后端 未结 3 1648
庸人自扰
庸人自扰 2020-12-17 08:21

I wrote a custom ViewPager to disable Swipe Scroll, but I want to swipe programmatically. I have three Tab in my view pager, but when

相关标签:
3条回答
  • 2020-12-17 09:02

    try this :

      viewPager.postDelayed(new Runnable() {
    
        @Override
        public void run() {
            viewPager.setCurrentItem(position);
        }
    }, 10);
    

    sometimes, setCurrentItem on viewpager doesn't work. As pager's content was controlled by a spinner. both the spinners and the pagers state were restored onResume, and because of this the spinners onItemSelected listener was called during the next event propagation cycle.

    By using handler we can make this work because it set the pagers current position after the onItemSelected event fired.

    0 讨论(0)
  • 2020-12-17 09:19
    viewPager.setCurrentItem(idx);
    

    where idx is 0 based integer.

    0 讨论(0)
  • 2020-12-17 09:22

    In your PagerActivity use

        viewPager = (ViewPager) findViewById(R.id.view_pager);
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                int pagei = position + 1;
                pages=pagei + "";
    
                Toast.makeText(PagerActivity.this, getString(R.string.changeinfopage) + " " + pages, Toast.LENGTH_SHORT).show();
            }
    
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            }
    
            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });
    

    and

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
    
    
            switch (item.getItemId()) {
    
                case R.id.action_previous:
    
                    viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
                    return true;
    
                case R.id.action_next:
    
                    viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);
                    return true;
            }
    
            return super.onOptionsItemSelected(item);
    
       }
    
    0 讨论(0)
提交回复
热议问题