天天看点

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

}

}

继续阅读