ViewPager和ActionBar中簡單經常使用tab例子

效果圖示例:java

 

 

 

 


一、在res/values下建一個arrays.xml佈局android

 

代碼ide

 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="array_tabs">
        <item>記錄</item>
        <item>聯繫人</item>
        <item>收藏夾</item>
        <item>羣組</item>
    </string-array>
</resources>佈局

 

================this

 


二、在res/layout下有2個佈局activity_main.xml和textview.xml佈局spa

 

textview.xml佈局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" >utf-8

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

</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>

 


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

 

 

三、源文件有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();  }   }}

相關文章
相關標籤/搜索