您的位置:首页 > 移动开发 > Android开发

Android3.0以前的Fragment支持实现Tab导航

2016-09-17 17:27 459 查看
第一步:使用ViewPager存放不同的页面,并使用PagerTitleStrip作为导航的状态条,布局文件如下:

<?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文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐