天天看點

ActionBar和ViewPager結合實作内容切換

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

}

}

繼續閱讀