2015-05-21 54 views
0

我正在使用ViewPagerPagerTabStrip在設備頂部顯示4個選項卡。我想要做的就是將4個選項卡固定到位並居中,但我不知道如何做到這一點,因爲舊的方式(使用操作欄選項卡)已被棄用。單頁上的標籤

基本上,我有這樣的事情: enter image description here

但我想它使我的標籤所有4個在同一頁(所有可見)上。

這是我的代碼來設置尋呼機適配器連接到ViewPager

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    pager = (ViewPager) findViewById(R.id.pager); 
    pager.setAdapter(new MainPagerAdapter(getSupportFragmentManager())); 

} 

,這是相關的XML:

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    tools:context=".MainActivity" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.v4.view.PagerTabStrip 
     android:id="@+id/pager_tab_strip" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="top" 
     android:background="@color/theme_color" 
     android:textColor="#fff" 
     android:paddingTop="18dp" 
     android:paddingBottom="18dp"/> 

</android.support.v4.view.ViewPager> 

那麼我將如何解決使用PagerTabStrip的標籤?如果我不能,我還能用它來做什麼?

注:類似的問題已被要求before,但我找不到任何可靠的答案。同樣的問題here也是如此。

+0

您是否試圖創建這樣的材料設計選項卡? https://cloud.githubusercontent.com/assets/7454787/7192840/853c99a4-e467-11e4-8259-aa45df5dfddd.PNG –

+0

是的,正好。但我知道如何去做的方式已被Android L棄用,所以我非常迷茫 – ujvl

+0

我將使用另一個庫發佈代碼給你,我只需要知道你是否使用片段作爲選項卡。 –

回答

2

如果您需要更多信息,請在下面的評論中發佈。

首先您要將庫添加到gradle中的項目或安裝庫。

搖籃爲編譯 'com.jpardogo.materialtabstrip:庫:1.0.9' 或下載在https://github.com/jpardogo/PagerSlidingTabStrip

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

    defaultConfig { 
     applicationId "com.eugene.pagertesting" 
     minSdkVersion 14 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:22.1.1' 
    compile 'com.jpardogo.materialtabstrip:library:1.0.9' 
} 

XML

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity"> 


    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/primary" 
     android:minHeight="56dp" 
     app:theme="@style/ThemeOverlay.AppCompat.Dark"/> 


    <com.astuetz.PagerSlidingTabStrip 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="48dp" 
     android:layout_below="@+id/toolbar" 
     android:background="@color/primary" 
     android:textColorPrimary="@color/white" 
     app:pstsDividerColor="@color/primary" 
     app:pstsIndicatorColor="@color/white" 
     app:pstsIndicatorHeight="2dp" 
     app:pstsShouldExpand="true" 
     app:pstsUnderlineHeight="0dp"/> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/tabs"/> 

</RelativeLayout> 

PagerAdapter

項目
public class PagerAdapter extends FragmentPagerAdapter { 

    public PagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    private Fragment f = null; 

    @Override 
    public Fragment getItem(int position) { // Returns Fragment based on position 
     switch (position) { 
      case 0: 
       f = new FragmentPageOne(); 
       break; 
      case 1: 
       f = new FragmentPageTwo(); 
       break; 
     } 
     return f; 
    } 

    @Override 
    public int getCount() { // Return the number of pages 
     return 2; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { // Set the tab text 
     if (position == 0) { 
      return "Fragment One"; 
     } 
     if (position == 1) { 
      return "Fragment Two"; 
     } 
     return getPageTitle(position); 
    } 
} 

MainActivity

public class MainActivity extends AppCompatActivity { 
    ViewPager viewPager; 
    PagerAdapter pagerAdapter; 
    PagerSlidingTabStrip pagerSlidingTabStrip; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     viewPager = (ViewPager) findViewById(R.id.pager); 
     pagerAdapter = new PagerAdapter(getSupportFragmentManager()); 
     pagerSlidingTabStrip = (PagerSlidingTabStrip) findViewById(R.id.tabs); 
     viewPager.setAdapter(pagerAdapter); 
     pagerSlidingTabStrip.setViewPager(viewPager); 
    } 
} 

enter image description here

如果你想知道我是怎麼稱呼的應用程序,我將張貼也只是讓我知道。

UPDATE 如果你想放下標籤下方的陰影,我也可以發佈。

+0

完美無缺!謝謝。 – ujvl

+0

@ uj-沒問題。密碼! –

+0

快速問題:你會碰巧知道是否可以在特定選項卡中嵌套另一個「PagerSlidingTabStrip」,而不附加「ViewPager」?我想在「PagerSlidingTabStrip」的第一個選項卡下放置幾個選項卡,但我不想在它們之間滑動,因爲這會干擾第一組選項卡的「ViewPager」。如果你不確定如何做到這一點,那很酷。 – ujvl