我是 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/