實現螢幕切換、滑動-ViewPager詳解(二)之--------PagerTitleStrip與PagerTabStrip新增標題欄
PagerTabStrip
1.PagerTabStrip概述:(API解釋)
PagerTabStrip是ViewPager的一個關於當前頁面、上一個頁面和下一個頁面的一個非互動的指示器。它經常作為ViewPager控制元件的一個子控制元件被被新增在XML佈局檔案中。在你的佈局檔案中,將它作為子控制元件新增在ViewPager中。而且要將它的 android:layout_gravity 屬性設定為TOP或BOTTOM來將它顯示在ViewPager的頂部或底部。每個頁面的標題是通過介面卡的getPageTitle(int)函式提供給ViewPager的。
2.使用:
1>在你的佈局檔案中,將它作為子控制元件新增在ViewPager中。屬性設定為top或者bottom。
2>標題的獲取,是重寫介面卡的getPageTitle(int)函式來獲取的。
PagerTabStrip
1.與PagerTitleStrip的區別:
1、PagerTabStrip在當前頁面下,會有一個下劃線條來提示當前頁面的Tab是哪個。
2、PagerTabStrip的Tab是可以點選的,當用戶點選某一個Tab時,當前頁面就會跳轉到這個頁面,而PagerTitleStrip則沒這個功能。(可互動)
2.用法:
與PagerTitleStrip完全相同。
3.延伸:
1>更改下劃線顏色:
主要靠PagerTabStrip的setTabIndicatorColorResource方法;
4.範例:
xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
>
<android.support.v4.view.PagerTabStrip
android:id="@+id/pagerTabStrip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</android.support.v4.view.ViewPager>
</RelativeLayout>
四個view佈局這裡不再總結,
介面卡:
public class MyPagerAdapter extends PagerAdapter {
private List<View> mviews;
private String[] mtitles;
public MyPagerAdapter(List<View> mviews,String[] mtitles){
this.mviews=mviews;
this.mtitles=mtitles;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mviews.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0==arg1;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView(mviews.get(position));
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
container.addView(mviews.get(position));
return mviews.get(position);
}
@Override
public CharSequence getPageTitle(int position) {//重寫此方法,返回標題
// TODO Auto-generated method stub
return mtitles[position];
}
}
java主介面:
public class ThirdActivity extends Activity{
private ViewPager mViewPager;
private List<View> mviews;
private String[] mtitles;
private LayoutInflater flater;
private MyPagerAdapter pageradapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
mViewPager = (ViewPager) findViewById(R.id.viewPager);
flater = getLayoutInflater();
init();
pageradapter = new MyPagerAdapter(mviews, mtitles);
mViewPager.setAdapter(pageradapter);
}
private void init() {
// TODO Auto-generated method stub
mviews = new ArrayList<View>();
View view1 = flater.inflate(R.layout.view1, null);
View view2 = flater.inflate(R.layout.view2, null);
View view3 = flater.inflate(R.layout.view3, null);
View view4 = flater.inflate(R.layout.view4, null);
mviews.add(view1);
mviews.add(view2);
mviews.add(view3);
mviews.add(view4);
mtitles = new String[]{"標題1","標題2","標題3","標題4"};
}
}
結果演示:
總結:
通過前面的講解,我們應該清楚的認識到PagerTabStrip與PagerTitleStrip在新增標題欄的異同,但他們實現的標題欄效果很不好,不能指定一個頁面一次顯示一個,或者全部顯示,而且標題還滑動。所以註定主流的App都沒有用這個玩意的。所以這裡也只是一個過渡,在開發中,我們也不建議使用這兩個東東
注意:在主介面資料改變時,也要複寫notifyDataSetChanged() 來重新整理資料。