2015-05-21 31 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