1.首先要寫好布局檔案,一個是包含viewPager的,其它的用來顯示ViewPager中的内容,在最初實驗期間可以簡單放一個文本就行
包含viewPager的布局檔案
......
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</android.support.v4.view.ViewPager>
2.寫class檔案加載ViewPager的内容,這裡給出一個示例:
public class Fragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) {
return findView(inflater, container, bundle, R.layout.fragment1);
}
private View findView(LayoutInflater inflater, ViewGroup container,
Bundle bundle, int layoutResourceId) {
View layout = inflater.inflate(layoutResourceId, container, false);
return layout;
}
}
3.在主方法中實作ActionBar和ViewPager的互動
public class MainActivity1 extends FragmentActivity implements
ActionBar.TabListener, OnPageChangeListener {
// 定義顯示的頁面
private Fragment1 mFragment1 = new Fragment1();
private Fragment2 mFragment2 = new Fragment2();
private Fragment3 mFragment3 = new Fragment3();
// 顯示頁面的個數
private static final int TAB_INDEX_COUNT = 3;
private static final int TAB_INDEX_ONE = 0;
private static final int TAB_INDEX_TWO = 1;
private static final int TAB_INDEX_THREE = 2;
private ViewPager mViewPager;
private ViewPagerAdapter mViewPagerAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setUpActionBar();
setUpViewPager();
setUpTabs();
}
private void setUpActionBar() {
final ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(false);//
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);// 設定為導航模式
actionBar.setDisplayShowTitleEnabled(false);// 設定不顯示title
actionBar.setDisplayShowHomeEnabled(false);//
}
private void setUpViewPager() {
mViewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);// 獲得ViewPager元件
mViewPager.setAdapter(mViewPagerAdapter);
mViewPager.setOnPageChangeListener(this);
}
private void setUpTabs() {
final ActionBar actionBar = getActionBar();
for (int i = 0; i < mViewPagerAdapter.getCount(); ++i) {
actionBar.addTab(actionBar.newTab()
.setText(mViewPagerAdapter.getPageTitle(i))
.setTabListener(this));
}
}
@Override
protected void onDestroy() {
super.onDestroy();
}
public class ViewPagerAdapter extends FragmentPagerAdapter {
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case TAB_INDEX_ONE:
return mFragment1;
case TAB_INDEX_TWO:
return mFragment2;
case TAB_INDEX_THREE:
return mFragment3;
}
throw new IllegalStateException("No fragment at position "
+ position);
}
@Override
public int getCount() {
return TAB_INDEX_COUNT;
}
public CharSequence getPageTitle(int position) {
String tabLabel = null;
switch (position) {
case TAB_INDEX_ONE:
tabLabel = getString(R.string.tab_1);
break;
case TAB_INDEX_TWO:
tabLabel = getString(R.string.tab_2);
break;
case TAB_INDEX_THREE:
tabLabel = getString(R.string.tab_3);
break;
}
return tabLabel;
}
}
public void onPageScrollStateChanged(int state) {
switch (state) {
case ViewPager.SCROLL_STATE_IDLE:// 未拖動頁面時執行
break;
case ViewPager.SCROLL_STATE_DRAGGING:// 正在拖動頁面時執行
break;
case ViewPager.SCROLL_STATE_SETTLING:
break;
default:
break;
}
}
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
public void onPageSelected(int position) {
final ActionBar actionBar = getActionBar();
actionBar.setSelectedNavigationItem(position);
}
public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) {
mViewPager.setCurrentItem(tab.getPosition());
}
public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) {
}
public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) {
}
}