ViewPager和ActionBar中简单常用tab例子

效果图示例:

 

 

ViewPager和ActionBar中简单常用tab例子_第1张图片

 

 

ViewPager和ActionBar中简单常用tab例子_第2张图片


1、在res/values下建一个arrays.xml布局

 

代码

 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="array_tabs">
        <item>记录</item>
        <item>联系人</item>
        <item>收藏夹</item>
        <item>群组</item>
    </string-array>
</resources>

 

================

 


2、在res/layout下有2个布局activity_main.xml和textview.xml布局

 

textview.xml布局


代码


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

 

================


activity_main布局

 

代码

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
         />

</RelativeLayout>

 


================

 

 

3、源文件有2个MainActivity.java类和PagerFragment.java类

 


PagerFragment.java类

 

代码

 


public class PagerFragment extends Fragment {

 private int tabIndex;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  tabIndex = getArguments().getInt("tabIndex");
 }
 @Override
 public View onCreateView(LayoutInflater inflater,
   @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  View view = inflater.inflate(R.layout.textview,container,false);
  TextView text = (TextView) view.findViewById(R.id.textView);
  switch(tabIndex){
  case 0:
   text.setText("这是记录页面");
   break;
  case 1:
   text.setText("这是联系人页面");
   break;
  case 2:
   text.setText("这是收藏夹页面");
   break;
  case 3:
   text.setText("这是群组页面");
   break;
  }
  return view;
 }
}

 

 


===================

 

MainActivity类


代码


public class MainActivity extends FragmentActivity {

 private ViewPager viewPager;
 private ActionBar actionBar;
 private String[] tabs;
 private List<Fragment> list;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  this.viewPager = (ViewPager) this.findViewById(R.id.viewPager);
  actionBar = getActionBar();
  //设置actionBar的模式
  actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
  list = new ArrayList<Fragment>();
  
  tabs = getResources().getStringArray(R.array.array_tabs);
  for(int i = 0;i<tabs.length;i++){
   //创建tab
   Tab tab = actionBar.newTab();
   //设置tab标题
   tab.setText(tabs[i]);
   //设置tab监听
   tab.setTabListener(new TabListener() {
    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    }
    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
     //选中tab时 viewPager要相应的改变
     viewPager.setCurrentItem(tab.getPosition());
    }
    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
    }
   });
   actionBar.addTab(tab);//把tab添加到ActionBar
   
   //fragment的设置
   PagerFragment fragment = new PagerFragment();
   Bundle bundle = new Bundle();
   bundle.putInt("tabIndex", i);
   fragment.setArguments(bundle);
   
   list.add(fragment);
  }
  
  viewPager.setAdapter(new MyAdapter(getSupportFragmentManager(),list));
  //viewPager事件监听
  viewPager.setOnPageChangeListener(new OnPageChangeListener() {
   @Override
   public void onPageSelected(int position) {
    //滑动ViewPager时ActionBar中的tab也要相应改变
    actionBar.setSelectedNavigationItem(position);
   }
   @Override
   public void onPageScrolled(int arg0, float arg1, int arg2) {
   }
   @Override
   public void onPageScrollStateChanged(int arg0) {
   }
  });
 }
 class MyAdapter extends FragmentPagerAdapter{

  private List<Fragment> list;
  public MyAdapter(FragmentManager fm, List<Fragment> list) {
   super(fm);
   this.list = list;
  }
  @Override
  public Fragment getItem(int position) {
   // TODO Auto-generated method stub
   return this.list.get(position);
  }
  @Override
  public int getCount() {
   // TODO Auto-generated method stub
   return this.list.size();
  }
  
 }
}

你可能感兴趣的:(ViewPager和ActionBar中简单常用tab例子)