1

this tutorial的幫助下,我爲我的Android應用程序創建了一個PagerAdapter。添加標題到ViewPager

現在我喜歡爲每個頁面添加標題(如在Play商店中)。 我找到這個庫:http://viewpagerindicator.com/ 但我找不到如何在我的應用程序中實現它或如何使用它。

有人可以向我解釋用法嗎?

這裏是我的PagerAdapter的代碼,如果需要的話:

public class MyPagerAdapter extends PagerAdapter { 

    public int getCount() { 
     return 5; 
    } 

    public Object instantiateItem(View collection, int position) { 

     LayoutInflater inflater = (LayoutInflater) collection.getContext() 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     int resId = 0; 

     switch(position) { 
      case 0: 
       resId = R.layout.farleft; 
       break; 
      case 1: 
       resId = R.layout.left; 
       break; 
      case 2: 
       resId = R.layout.middle; 
       break; 
      case 3: 
       resId = R.layout.right; 
       break; 
      case 4: 
       resId = R.layout.farright; 
       break; 
     } 

     View view = inflater.inflate(resId, null); 

     ((ViewPager) collection).addView(view, 0); 

     return view; 
    } 

    @Override 
    public void destroyItem(View arg0, int arg1, Object arg2) { 
     ((ViewPager) arg0).removeView((View) arg2); 
    } 

    @Override 
    public boolean isViewFromObject(View arg0, Object arg1) { 
     return arg0 == ((View) arg1); 
    } 

    @Override 
    public Parcelable saveState() { 
     return null; 
    } 
} 
+0

你看過'getPageTitle()'方法嗎? (http://developer.android.com/reference/android/support/v4/view/PagerAdapter.html#getPageTitle%28int%29) – Luksprog

+0

好吧,我可以用這種方法找出頁面的標題。但我想在ViewPager的頂部添加一個「標題欄」。在切換類別時,與Google Play商店中的類似。你懂我的意思嗎? – snix

+0

查看Commonsware的回答。我以爲你的佈局中已經有了一個'PagerTitleStrip'。 – Luksprog

回答

9

現在我喜歡一個標題添加到每個頁面(如在Play商店)

PagerTabStripPagerTitleStrip在Android支持包中,您從中獲得ViewPager。只需將其中一個添加爲您的ViewPager的子項,並使用android:layout_gravity指示您是否想要頂部或底部的條。然後,如Luksprog所示,將getPageTitle()添加到您的PagerAdapter

Here is a sample project演示使用PagerTabStrip

但我找不到如何在我的應用程序中實現它或如何使用它。

基本說明位於您鏈接到的頁面上。將ViewPagerIndicator窗口小部件中的一個添加到您的佈局中,並將其放置在您想要的位置(例如,使用verticalLinearLayout將一個窗口堆疊在ViewPager之上)。有時在ViewPager上撥打setAdapter()後,請在指示器小部件上撥打setViewPager(),並將其提供給您的ViewPager。再一次,您還需要在PagerAdapter上實施getPageTitle()

+0

現在我添加了PagerTitleStrip。這就是我需要的:)但是,我究竟如何使用getPageTitle方法?我已經將它添加到了我的PagerAdapter中,但是我收到了很多錯誤。而且我想知道如果他們沒有定義,這將如何找到我的標題。 – snix

+0

@cShock_:您可以在我鏈接的示例項目中看到'getPageTitle()'。你只要返回一些'String'給定頁面的位置。在我的情況下,我正在建立一個字符串資源和位置號碼本身。 – CommonsWare

+0

它的工作原理,當我只是修改getPageTitle方法返回「測試」。現在每個標題都是「測試」。但是當我使用你的實現時,它會給我一個StackOverflowError。我是否正確,當我在PagerAdapter中重寫此方法? – snix

2

今天,我發現圖書館PagerSlidingTabStrip是一個比android默認的選擇更好的選擇。

https://github.com/astuetz/PagerSlidingTabStrip

PS:對不起張貼作爲回答,我沒有意見徵求足夠的聲譽。

+0

一旦你這樣做,請移動到這個問題的評論。 :) –