效果圖示例: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(); } }}