android - 无法更改 TabLayout 中的选项卡

标签 android android-fragments tabs

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

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);

此应用程序的输出是一个选项卡布局,其中包含卡片 View 的 fragment 作为选项卡。现在,当我触摸选项卡标题时,我可以切换到不同的选项卡,也可以通过用手指滑动 fragment 来切换选项卡。但是,当我添加此选项卡时

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) {
        }
    });

我无法再切换选项卡,即当我触摸选项卡标题时,尽管代码被触发(图像更改),选项卡不会切换,但用手指滑动选项卡仍然有效。我的代码中是否缺少任何内容?或者还有其他方法可以实现这一目标吗?

最佳答案

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

  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());
        }
   }

希望这有帮助!!

关于android - 无法更改 TabLayout 中的选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35705691/

相关文章:

Android map 示例

Google 搜索中的 Android 应用程序索引

android - 如何以编程方式更改选项卡指示器颜色

jquery - 使用 jQuery 在页面上切换 DIV

java - 滑动选项卡时更改菜单项

c# - Uri.Parse 已弃用

java - Android Ping 命令在无法访问的服务器上死机

android - 选项卡、 Activity 和嵌套 fragment

android - 如何在方向改变时将 fragment 保存在内存中

java - 如何从另一个 Activity 转到滑动选项卡布局中的特定选项卡