【问题标题】:ViewPager navigation buttonsViewPager 导航按钮
【发布时间】:2013-01-13 15:55:44
【问题描述】:

我的 xml-pager 文件中已经有了“左”和“右”两个按钮。 我想设置它们:当我点击“左”按钮时,页面会自动向左滑动,当我点击“右”按钮时,它会自动向右滑动。有人可以给我代码以放入我的活动文件吗?谢谢!

【问题讨论】:

    标签: android button swipe pager


    【解决方案1】:

    要转到下一页/上一页,请使用以下内容:

    private void nextPage() {
        int currentPage = viewPager.getCurrent();
        int totalPages = viewPager.getAdapter().getCount();
    
        int nextPage = currentPage+1;
        if (nextPage >= totalPages) {
            // We can't go forward anymore.
            // Loop to the first page. If you don't want looping just
            // return here.
            nextPage = 0;
        }
    
        viewPager.setCurrentItem(nextPage, true);
    }
    
    private void previousPage() {
        int currentPage = viewPager.getCurrent();
        int totalPages = viewPager.getAdapter().getCount();
    
        int previousPage = currentPage-1;
        if (previousPage < 0) {
            // We can't go back anymore.
            // Loop to the last page. If you don't want looping just
            // return here.
            previousPage = totalPages - 1;
        }
    
        viewPager.setCurrentItem(previousPage, true);
    }
    

    【讨论】:

    • 感谢您的回答 Joseph.. 我对 android 编程真的很陌生,所以我很抱歉这个问题,但我要把这段代码放在哪里?
    • 把它放到你的UNO.java中,把viewPager替换成mPager
    【解决方案2】:

    对于 android.support.v4,您可以使用以下内容:

    ViewPager pager;
    pager = (ViewPager) findViewById(R.id.viewPager);       
    pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
    

    有一个像这样的 veiwpager 适配器类:

    private class MyPagerAdapter extends FragmentPagerAdapter {
    
        public MyPagerAdapter(FragmentManager fm) {
            super(fm);
        }
    
        @Override
        public Fragment getItem(int pos) {
    
            switch(pos)
            {
                case 0: return WelcomeFrag1.newInstance("Page 1");
                case 1: return WelcomeFrag2.newInstance("Page 2");
                case 2: return WelcomeFrag3.newInstance("Page 3");
                case 3: return WelcomeFrag4.newInstance("Page 4");
                case 4: return WelcomeFrag5.newInstance("Page 5");
                default: return WelcomeFrag1.newInstance("Page 1");
            }           
        }
    
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return 5;
        }       
    }
    

    最后有两个方法 nextPage() 和 previousPage() 像这样:

    private void nextPage() {
        int currentPage = pager.getCurrentItem();
        int totalPages = pager.getAdapter().getCount();
    
        int nextPage = currentPage+1;
        if (nextPage >= totalPages) {
            // We can't go forward anymore.
            // Loop to the first page. If you don't want looping just
            // return here.
            nextPage = 0;
        }
    
        pager.setCurrentItem(nextPage, true);
    }
    
    private void previousPage() {
        int currentPage = pager.getCurrentItem();
        int totalPages = pager.getAdapter().getCount();
    
        int previousPage = currentPage-1;
        if (previousPage < 0) {
            // We can't go back anymore.
            // Loop to the last page. If you don't want looping just
            // return here.
            previousPage = totalPages - 1;
        }
    
        pager.setCurrentItem(previousPage, true);
    }
    

    注意:我是使用getCurrentItem()来获取当前页面的索引

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      相关资源
      最近更新 更多