Android3.0以前的Fragment支持实现Tab导航
2016-09-17 17:27
459 查看
第一步:使用ViewPager存放不同的页面,并使用PagerTitleStrip作为导航的状态条,布局文件如下:
第二步:编写实现支持3.0以前的ActionBar的Tab导航的Activity代码,使用ViewPager和FragmentPagerAdapter的配合使用来装载Fragment页面,具体实现的FragmentActivity如下:
public class Tab3Activity extends FragmentActivity implements ActionBar.TabListener{
ViewPager viewPager;
ActionBar actionBar;
private static final int TAB_COUNT = 3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.android3_tab);
actionBar = getActionBar();
viewPager = (ViewPager) findViewById(R.id.pager);
// 自定义FragmentPagerAdapter适配器
FragmentPagerAdapter pagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()){
@Override
public Fragment getItem(int position) {
Fragment fragment = new DummyFragment();
Bundle args = new Bundle();
args.putInt(DummyFragment.ARG_SECTION_NUMBER, position + 1);
fragment.setArguments(args);
return fragment;
}
// 表面该Adapter共包含多少个Fragment
@Override
public int getCount() {
return TAB_COUNT;
}
// 该方法决定每个Fragment的标题
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "第一页";
case 1:
return "第二页";
case 2:
return "第三页";
}
return null;
}
};
// 为ActionBar设置导航模式
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// ActionBar添加Tab标签
for(int i = 0; i < pagerAdapter.getCount(); i++){
actionBar.addTab(actionBar.newTab().setText(pagerAdapter.getPageTitle(i))
.setTabListener(this));
}
// 为viewPager设置适配器
viewPager.setAdapter(pagerAdapter);
viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
actionBar.setSelectedNavigationItem(position);
}
});
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
}
DummyFragment的代码如下:
public class DummyFragment extends android.support.v4.app.Fragment {
public final static String ARG_SECTION_NUMBER = "section_number";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
TextView textView = new TextView(getActivity());
textView.setGravity(Gravity.START);
Bundle args = getArguments();
textView.setText(args.getInt(ARG_SECTION_NUMBER)+"");
textView.setTextSize(28);
return textView;
}
}
运行效果如下:
注:需要在项目(module)libs目录下导入android-support-v4.jar文件
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.PagerTitleStrip android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="top" android:background="#33b5e5" android:textColor="#fff" android:paddingTop="3dp" android:paddingBottom="3dp" /> </android.support.v4.view.ViewPager>
第二步:编写实现支持3.0以前的ActionBar的Tab导航的Activity代码,使用ViewPager和FragmentPagerAdapter的配合使用来装载Fragment页面,具体实现的FragmentActivity如下:
public class Tab3Activity extends FragmentActivity implements ActionBar.TabListener{
ViewPager viewPager;
ActionBar actionBar;
private static final int TAB_COUNT = 3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.android3_tab);
actionBar = getActionBar();
viewPager = (ViewPager) findViewById(R.id.pager);
// 自定义FragmentPagerAdapter适配器
FragmentPagerAdapter pagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()){
@Override
public Fragment getItem(int position) {
Fragment fragment = new DummyFragment();
Bundle args = new Bundle();
args.putInt(DummyFragment.ARG_SECTION_NUMBER, position + 1);
fragment.setArguments(args);
return fragment;
}
// 表面该Adapter共包含多少个Fragment
@Override
public int getCount() {
return TAB_COUNT;
}
// 该方法决定每个Fragment的标题
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "第一页";
case 1:
return "第二页";
case 2:
return "第三页";
}
return null;
}
};
// 为ActionBar设置导航模式
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// ActionBar添加Tab标签
for(int i = 0; i < pagerAdapter.getCount(); i++){
actionBar.addTab(actionBar.newTab().setText(pagerAdapter.getPageTitle(i))
.setTabListener(this));
}
// 为viewPager设置适配器
viewPager.setAdapter(pagerAdapter);
viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
actionBar.setSelectedNavigationItem(position);
}
});
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
}
DummyFragment的代码如下:
public class DummyFragment extends android.support.v4.app.Fragment {
public final static String ARG_SECTION_NUMBER = "section_number";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
TextView textView = new TextView(getActivity());
textView.setGravity(Gravity.START);
Bundle args = getArguments();
textView.setText(args.getInt(ARG_SECTION_NUMBER)+"");
textView.setTextSize(28);
return textView;
}
}
运行效果如下:
注:需要在项目(module)libs目录下导入android-support-v4.jar文件
相关文章推荐
- 处女男学Android(八)---Fragment初体验之实现Tab导航
- Android Tab导航菜单栏--FragmentTabHost+Fragment实现(基础篇)
- Android3.0以前的Fragment支持(ViewPager)
- Android ViewPager和Fragment实现顶部导航界面滑动效果、标签下的tab位置
- Android Tab导航菜单栏--FragmentTabHost+Fragment实现(转载)
- 处女男学Android(十一)---Gallery、ViewPager和ViewPager+Fragment实现的Tab导航
- Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab
- 【Android UI设计与开发】第11期:顶部标题栏(二)ActionBar实现Tab选项卡和下拉导航列表
- 【Android UI设计与开发】第11期:顶部标题栏(二)ActionBar实现Tab选项卡和下拉导航列表
- 【Android UI设计与开发】第11期:顶部标题栏(二)ActionBar实现Tab选项卡和下拉导航列表
- Android ViewPager和Fragment实现顶部导航界面滑动效果
- android Fragment实现Tab功能(fragment相互切换时,可保存之前状态)
- android_使用ViewPager和Fragment实现滑动导航
- Android入门之ActionBar实现Tab导航
- Android UI之Tab(ActionBar+Fragment实现)
- Android 自定义控件 优雅实现元素间的分割线 (支持3.0以下)
- 【Android UI设计与开发】第11期:顶部标题栏(二)ActionBar实现Tab选项卡和下拉导航列表
- Android:Fragment+ViewPager实现Tab滑动
- Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab
- Android Fragment 学习<2> 滑动TAb导航(ActionBar)