android - Tabview 不会在触摸时更改选项卡
问题描述
我环顾谷歌和堆栈溢出以找到解决方案,但我似乎无法理解为什么我无法让它工作,我遵循我所看到的一切。我的问题是,每当我触摸选项卡时,它都不会更改为我选择的选项卡。看着我正在遵循 [This Stackoverflow post][1] 的指示的那一刻,请注意标签在完美滑动时工作
这是选项卡视图的 XML。
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 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:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="fill"
app:tabMode="scrollable"
app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget" />
<android.support.v4.view.ViewPager
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tabs"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
我也在我的主要活动中添加了这个。(容器用于我的回收站视图)
TabLayout tabLayout = findViewById(R.id.tabs);
viewPager = findViewById(R.id.container);
setupViewPager(viewPager);
tabLayout.setupWithViewPager(viewPager);
同样在我的主要活动中,我有这个方法来创建我的标签。(在这篇文章中编辑的标签名称和片段名称)
private void setupViewPager(ViewPager viewPager) {
SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager());
adapter.addFragment(new 1_Fragment(),"tab1");
adapter.addFragment(new 2_Fragment(),"tab2");
adapter.addFragment(new 3_Fragment(),"tab3");
adapter.addFragment(new 4_Fragment(),"tab4");
adapter.addFragment(new 5_Fragment(),"tab5");
adapter.addFragment(new 6_Fragment(),"tab6");
adapter.addFragment(new 7_Fragment(),"tab7");
viewPager.setAdapter(adapter);
}
在主要活动中,我也有这个,但它似乎在点击时不起作用。虽然使用 Log.d 我检查了它,但它在滑动时可以工作。
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
Log.d("Tab", String.valueOf(tab.getPosition()));
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
解决方案
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 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:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.v4.view.ViewPager
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tabs"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="fill"
app:tabMode="scrollable"
app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget" />
</android.support.design.widget.CoordinatorLayout>
移动TabLayout
到底部ViewPager
推荐阅读
- c# - c# - 将 DataGridView 导出为 PDF 代码生成错误
- python - 隔离在 pd.Excelread 中出现错误的 Excel 文件
- vue.js - 如何修复 vue-cli-service 漏洞?
- r - ggplot2 3并排直方图
- xml - 为 xml 初始化模板内的变量指定次数
- react-native - Native-base Invariant Violation:文本字符串必须在文本组件中呈现
- kernel - 如何处理linux内核中的一般保护错误
- php - 如何将mysql获取的数据再次插入数据库表E
- linux - 如何使用 awk 在文件中搜索包含美元符号 ($) 的单词
- powershell - 使用powershell更改属性