无法更改 TabLayout 中的选项卡

cannot change tabs in TabLayout

我是 android 编程的新手,我正在尝试通过触摸选项卡 header 文本来更改选项卡。这是我的代码

activity_main

<android.support.design.widget.AppBarLayout>

    <android.support.design.widget.CollapsingToolbarLayout>

        <ImageView
            android:id="@+id/image"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:src="@drawable/test_image"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:scaleType="centerCrop" />

        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:background="@android:color/transparent"
            app:layout_collapseMode="pin"
            />
        <android.support.v7.widget.Toolbar/>
    </android.support.design.widget.CollapsingToolbarLayout>

</android.support.design.widget.AppBarLayout>

Mainactivity.java

tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);

此应用程序的输出是一个 tablayout,其中片段作为包含 cardview 的选项卡。现在,当我触摸选项卡 header 时,我可以切换到不同的选项卡,也可以通过在添加此

时用 finger.However 滑动片段来切换选项卡
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {


            CharSequence _header = tab.getText();
            Selected_Tab_Header = String.valueOf(_header);

            if (Selected_Tab_Header == "Tab1") {
                headerImage.setImageResource(R.drawable.someImage);

            }

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {
        }
    });

我不能再切换选项卡了,即当我触摸选项卡时 header 虽然代码被触发(图像更改)选项卡没有切换但是仍然用手指滑动选项卡 works.Is 有任何事情我的代码中缺少?或者还有其他方法可以实现吗?

不要忘记 viewPager.setCurrentItem(tab.getPosition()) 在你的 onTabSelected:

  public void onTabSelected(TabLayout.Tab tab) {

        CharSequence _header = tab.getText();
        Selected_Tab_Header = String.valueOf(_header);

        if (Selected_Tab_Header == "Tab1") {
             headerImage.setImageResource(R.drawable.someImage);
        }

        if (viewPager != null) {
             viewPager.setCurrentItem(tab.getPosition());
        }
   }

希望对您有所帮助!!