附上demo工程下载链接:
http://download.csdn.net/detail/finnfu/9534197
其中:
<span style="font-family:SimHei;font-size:18px;">android.support.v7.app.ActionBarDrawerToggle:菜单
android.support.v7.widget.Toolbar:原来actionbar的位置
android.support.v4.widget.DrawerLayout:侧滑栏
在main_layout中:
<include layout="@layout/custom_toolbar" /> :可自定义布局
<include layout="@layout/custom_drawerlayout" />侧滑栏(前面是界面的主布局,后面是侧滑的布局)</span>
1.toggle的使用
<span style="font-family:SimHei;font-size:18px;">setSupportActionBar(toolbar);
getSupportActionBar().setHomeButtonEnabled(true); //设置返回键可用
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.open, R.string.close) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
}
};
mDrawerToggle.syncState();
mDrawerLayout.setDrawerListener(mDrawerToggle);</span>
2.在mainactivity中,viewpager+fragment,viewpager滑动的同时更新toolbar的显示
<span style="font-family:SimHei;font-size:18px;">mainViewPager = (ViewPager) findViewById(R.id.mainPager);
adapter = new MainFragmentAdapter(this.getSupportFragmentManager());
mainViewPager.setAdapter(adapter);
mainViewPager.setCurrentItem(0);</span>
在fragment中在使用viewpager+fragment+TabPageIndicator(可以指示显示的是那一页)
a.TabIndicator的使用网上例子很多,就不再讲了b.使用getChildFragmentManager,而不用getActivity().getSupportFragmentManager()
可以保持Fragment中数据不丢失,Fragment嵌套Fragment时要注意
c.初始化放在onActivityCreated,不放在onResume中,这里不会重复调
setCurrentItem(0);
<span style="font-family:SimHei;font-size:18px;">mainViewPager1 = (ViewPager) getActivity().findViewById(R.id.mainFragment_pager1);
mainViewPager1.setCurrentItem(0);
adapter = new MainFragmentAdapter_1(getChildFragmentManager());
mainViewPager1.setAdapter(adapter);
mIndicator1 = (TabPageIndicator) getActivity().findViewById(R.id.id_indicator1);
mIndicator1.setViewPager(mainViewPager1,0);
mIndicator1.setOnPageChangeListener(new MyOnPageChangeListen());</span>