package com.example.viewpagerandtabdemo;

import java.util.ArrayList;
import java.util.List; import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener; import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockFragmentActivity; public class MainActivity extends SherlockFragmentActivity implements ActionBar.TabListener, OnPageChangeListener{
/**
* 顶部Tab的title
*/
private String [] mTabTitles; /**
* ViewPager对象的引用
*/
private ViewPager mViewPager; /**
* 装载Fragment的容器,我们的每一个界面都是一个Fragment
*/
private List<Fragment> mFragmentList; /**
* ActionBar对象的引用
*/
private ActionBar mActionBar; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); mViewPager = (ViewPager) findViewById(R.id.viewPager);
mFragmentList = new ArrayList<Fragment>();
//设置Adapter
mViewPager.setAdapter(new TabPagerAdapter(getSupportFragmentManager(), mFragmentList));
//设置监听
mViewPager.setOnPageChangeListener(this); //从资源文件在获取Tab的title
mTabTitles = getResources().getStringArray(R.array.tab_title);
//获取Action实例我们使用getSupportActionBar()方法
mActionBar = getSupportActionBar();
//隐藏Title
mActionBar.setDisplayShowTitleEnabled(false);
//隐藏Home logo
mActionBar.setDisplayShowHomeEnabled(false);
//设置ActionBar的导航模式为Tab
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //为ActionBar添加Tab并设置TabListener
for(int i=; i<mTabTitles.length; i++){
ActionBar.Tab tab = mActionBar.newTab();
tab.setText(mTabTitles[i]);
tab.setTabListener(this);
mActionBar.addTab(tab, i);
} //将Fragment加入到List中,并将Tab的title传递给Fragment
for(int i=; i<mTabTitles.length; i++){
Fragment fragment = new ItemFragment();
Bundle args = new Bundle();
args.putString("arg", mTabTitles[i]);
fragment.setArguments(args);
mFragmentList.add(fragment);
} } @Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
//点击ActionBar Tab的时候切换不同的Fragment界面
mViewPager.setCurrentItem(tab.getPosition());
} @Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) { } @Override
public void onTabReselected(Tab tab, FragmentTransaction ft) { } @Override
public void onPageScrollStateChanged(int arg0) { } @Override
public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override
public void onPageSelected(int arg0) {
//滑动ViewPager的时候设置相对应的ActionBar Tab被选中
mActionBar.setSelectedNavigationItem(arg0);
} }
package com.example.viewpagerandtabdemo;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView; import com.actionbarsherlock.app.SherlockFragment; public class ItemFragment extends SherlockFragment { @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { View contextView = inflater.inflate(R.layout.fragment_item, container, false);
TextView mTextView = (TextView) contextView.findViewById(R.id.textview); //获取Activity传递过来的参数
Bundle mBundle = getArguments();
String title = mBundle.getString("arg"); mTextView.setText(title); return contextView;
} @Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
} }
package com.example.viewpagerandtabdemo;

import java.util.List;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter; public class TabPagerAdapter extends FragmentStatePagerAdapter {
private List<Fragment> list; //构造函数
public TabPagerAdapter(FragmentManager fm, List<Fragment> list) {
super(fm);
this.list = list;
} @Override
public Fragment getItem(int arg0) {
return list.get(arg0);
} @Override
public int getCount() {
return list.size();
} }

插件用的是github上的actionbarsherlock插件。

最新文章

  1. Asp.net窄屏页面 手机端新闻列表
  2. 【12_206】Reverse Linked List
  3. hihoCoder#1014 Trie树 (前缀树)
  4. javaSE第十五天
  5. c语言中内存对齐问题
  6. 构建微服务开发环境8————Hello 微服务
  7. CS程序自动更新实现原理及代码(支持多版本多文件更新)
  8. Applets的分析
  9. idea关闭标签快捷键修改----兼 常用实用快捷键
  10. 基于std::mutex std::lock_guard std::condition_variable 和std::async实现的简单同步队列
  11. zip&amp;unzip范例
  12. 15. &quot;wm_concat&quot;_数据库中将查询出来的多条记录中的某个字段用&quot;,&quot;拼接起来
  13. [K8S]kubeadm国内镜像安装方式
  14. perl 利用管道读取压缩文件内容
  15. Android Studio之高德地图实现定位和3D地图显示
  16. spring事务的配置
  17. KafKa 启动
  18. ASP.NET Web API根据代码注释生成Help文档
  19. C#中.Net的值传递和引用传递
  20. 「BZOJ 1791」「IOI 2008」Island「基环树」

热门文章

  1. [转]line-height1.5和line-height:150%的区别
  2. winxp精简版没有IIS的解决办法
  3. Android使用charles抓包
  4. Centos 自动删除日志文件的Shell代码
  5. java编程基础篇---------&gt; 编写一个程序,从键盘输入三个整数,求三个整数中的最小值。
  6. dubbo之服务分组
  7. TimerTask定时任务
  8. 聚合函数与SQL排序
  9. element ui table(表格)点击一行展开
  10. react-router @4用法整理