java - 使 ViewPager 在 android 中无限滚动

标签 java android

我创建了一个带有两个选项卡的 ViewPager,但想制作更多,为此,我首先尝试让我的选项卡无限滚动,不幸的是我无法让 View 寻呼机无限滚动。请帮忙。 /使用 Eclipse/ 这些是我的类(class):

MainActivity.java:

public class MainActivity extends FragmentActivity {

ActionBar mActionBar;
ViewPager mPager;
private int focusedPage = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    /** Getting a reference to action bar of this activity */
    mActionBar = getActionBar();

    /** Set tab navigation mode */
    mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    /** Getting a reference to ViewPager from the layout */
    mPager = (ViewPager) findViewById(R.id.pager);

    /** Getting a reference to FragmentManager */
    FragmentManager fm = getSupportFragmentManager();


    /** Defining a listener for pageChange */
    ViewPager.SimpleOnPageChangeListener pageChangeListener = new ViewPager.SimpleOnPageChangeListener(){
        @Override
        public void onPageSelected(int position) {              
            super.onPageSelected(position);
            mActionBar.setSelectedNavigationItem(position); 


        }

         @Override
         public void onPageScrolled(int arg0, float arg1, int arg2) {
         }

         @Override
         public void onPageScrollStateChanged(int arg0) {
         }
    };

    /** Setting the pageChange listner to the viewPager */
    mPager.setOnPageChangeListener(pageChangeListener);

    /** Creating an instance of FragmentPagerAdapter */
    MyFragmentPagerAdapter fragmentPagerAdapter = new MyFragmentPagerAdapter(fm);


    /** Setting the FragmentPagerAdapter object to the viewPager object */
    mPager.setAdapter(fragmentPagerAdapter);

    mActionBar.setDisplayShowTitleEnabled(true);

    /** Defining tab listener */
    ActionBar.TabListener tabListener = new ActionBar.TabListener() {

        @Override
        public void onTabReselected(Tab arg0,
                android.app.FragmentTransaction arg1) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onTabSelected(Tab tab,
            android.app.FragmentTransaction ft) {
            mPager.setCurrentItem(tab.getPosition());

        }

        @Override
        public void onTabUnselected(Tab tab,
                android.app.FragmentTransaction ft) {
            // TODO Auto-generated method stub

        }
    };

    /** Creating Android Tab */
    Tab tab = mActionBar.newTab()
                       .setText("Android")
                       .setIcon(R.drawable.android)
                       .setTabListener(tabListener);

    mActionBar.addTab(tab);

    /** Creating Apple Tab */
    tab = mActionBar.newTab()
                   .setText("Apple")
                   .setIcon(R.drawable.apple)
                   .setTabListener(tabListener);                               

    mActionBar.addTab(tab);        




}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

 public void onTabReselected(Tab tab, FragmentTransaction ft) {
    }

    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        // on tab selected
        // show respected fragment view
        mPager.setCurrentItem(tab.getPosition());
    }

    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    }

}

MyFragmentPagerAdapter.java:

public class MyFragmentPagerAdapter extends FragmentPagerAdapter{

final int PAGE_COUNT = 2;

/** Constructor of the class */
public MyFragmentPagerAdapter(FragmentManager fm) {
    super(fm);

}

/** This method will be invoked when a page is requested to create */
@Override
public Fragment getItem(int arg0) {
    Bundle data = new Bundle();
    switch(arg0){

        /** Android tab is selected */
        case 0:
            AndroidFragment androidFragment = new AndroidFragment();                
            data.putInt("current_page", arg0+1);
            androidFragment.setArguments(data);
            return androidFragment;

        /** Apple tab is selected */
        case 1:
            AppleFragment appleFragment = new AppleFragment();
            data.putInt("current_page", arg0+1);
            appleFragment.setArguments(data);
            return appleFragment;   
    }

    return null;
}

/** Returns the number of pages */
@Override
public int getCount() {     
    return PAGE_COUNT;
}   
}

为了更清楚,我想要一个应该如下所示的输出:

被选中的选项卡应该在中间,其他选项卡应该无限滚动: Scrollable Tabs

最佳答案

删除 PAGE_COUNT 的 final 并添加以下代码:

@Override
public int getCount() {     
    return PAGE_COUNT=PAGE_COUNT+1;
}

关于java - 使 ViewPager 在 android 中无限滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33795699/

相关文章:

java - JDI Thread Evaluations 遇到问题

java - 处理程序未给出确切的时间间隔

android - 图像未使用 Rx Observable 和 Retrofit2 加载 Picasso

java - 警报对话框不显示任何内容

java - 为什么我的 Spring @Autowired 字段为空?

java - 如何为对象数组实现 remove 方法

java - Spring全局事务在获取元素后提交

java - 为什么 EditText 没有通过 setFillAfter(true) 获得焦点?

java - 如何清除 Android WebView 的(CSS)访问历史记录?

java - 在 Java 运行时创建变量