滑动视图寻呼机片段不会移动选项卡

4 android swipe android-layout android-viewpager

使用ViewPager和Fragments Android TabLayout示例关注了这些教程Android TabLayout示例

但是,如果我滑动片段,视图寻呼机将不会移动.我得到了这个结果输出我得到了 我跟着上面的tutuorial只有没有变化,但是当我们滑动片段时,标签不会移动.请帮我.提前致谢.

这是activity_main.xml

<LinearLayout
android:id="@+id/main_layout"
android:orientation="vertical"
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">

<!-- our toolbar -->
<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

<!-- our tablayout to display tabs  -->
<android.support.design.widget.TabLayout
    android:id="@+id/tabLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>

<!-- View pager to swipe views -->
<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"/>

 </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

Ann*_*ada 6

viewpager上的页面正在滑动,这就是它在页面上显示"Tab 3"的原因.这是由于ViewPager的滑动属性而发生的.但是标签没有相应改变,这就是它在TAB1上展示的原因.因为tablayout和viewpager之间没有建立链接.

如果你在一起使用ViewPager与此标签的布局,你可以调用setupWithViewPager(ViewPager)链接两人在一起,描述在这里.

所以不需要调用addTab().

mTabLayout = (TabLayout)findViewById(R.id.tabLayout);
mViewPager = (ViewPager)findViewById(R.id.pager);

//mTabLayout.addTab(mTabLayout.newTab().setText("Tab1"));
//mTabLayout.addTab(mTabLayout.newTab().setText("Tab2"));
//mTabLayout.addTab(mTabLayout.newTab().setText("Tab3"));
//mTabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

Pager pager = new Pager(getSupportFragmentManager(),3);
mViewPager.setAdapter(pager);

mTabLayout.setupWithViewPager(mViewPager);
Run Code Online (Sandbox Code Playgroud)

此tablayout将自动从PagerAdapter的页面标题中填充.对于这个,

class Pager extends FragmentStatePagerAdapter{...

@Override
public CharSequence getPageTitle(int position) {
    super.getPageTitle(position);

    switch (position){
        case 0:
            return "Tab1";
        case 1:
            return "Tab2";
        case 2:
            return "Tab3";

        default:
            return null;
    }
}
Run Code Online (Sandbox Code Playgroud)