android - 如何实现多个fragments的滑动tab导航

标签 android material-design pagerslidingtabstrip

我想为我的应用程序添加一些适当的导航。我有两个 fragment ,我想制作一个标题条 tabs (类似于 Play Newsstand 或 Play Store 中的 Material Design)在两个 fragment 之间切换。我对 ViewPagerPagerAdapter 不是很了解。我也在尝试使用 this library .我不知道从哪里开始。提前致谢。

最佳答案

我实际上自己做了一次。好的。

首先,将库添加到 build.gradle 文件中的依赖项。

dependencies {
    compile 'com.jpardogo.materialtabstrip:library:1.0.6'
}

这就是我的 activity_main.xml 的样子。我从支持库中添加了 PagerSlidingTabStrip(使用我自己的自定义,请参阅 Github repo)和我的 ViewPager

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"
tools:ignore="MergeRootFrame"
android:fitsSystemWindows="true" >

<include layout="@layout/toolbar" />

<com.astuetz.PagerSlidingTabStrip
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:background="#33B5E5"
    android:textColor="#FFFFFF"
    app:pstsIndicatorColor="#FFFFFF"
    app:pstsPaddingMiddle="true" />

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

接下来,我在 MainActivity.javaonCreate() 方法中执行了以下步骤:

    // Initialize the ViewPager and set an adapter
    ViewPager pager = (ViewPager) findViewById(R.id.pager);
    pager.setAdapter(new PagerAdapter(getSupportFragmentManager()));

    // Bind the tabs to the ViewPager
    PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
    tabs.setViewPager(pager);

最后,FragmentPagerAdapter 类,也在 MainActivity.java 中。注意 Fragment getItem() 方法;这是我使用选项卡的位置在 fragment 之间切换的地方。

class PagerAdapter extends FragmentPagerAdapter {

private final String[] TITLES = {"Regular Tenses", "Perfect Tenses"};

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

@Override
public CharSequence getPageTitle(int position) {
    return TITLES[position];
}

@Override
public int getCount() {
    return TITLES.length;
}

@Override
public Fragment getItem(int position) {
    switch (position) {
        case 0:
            return new MainFragment();
        case 1:
            return new PerfectFragment();
    }

    return null;
   }
}

关于android - 如何实现多个fragments的滑动tab导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27160009/

相关文章:

java - EditText getText 返回空

android - 在折叠工具栏布局上将 RecyclerView 锚定得更高

javascript - Angular - mat-grid-list 不显示 <ng-content> 传递的子项

java - 如何使用PagerSlidingTabStrip android在viewpager选项卡上显示收到消息的计数?

android - 滑动选项卡布局 : why preload next tab?

java - 没有连续或顺序数字的正则表达式

java - 如何将日期选择器对话框 fragment 添加到首选项

java - 更改方向导致应用程序崩溃 android.support.v4.app.ListFragment

html - 使元素溢出到父元素之外

java - PagerSlidingTabStrip 打开时出错