【Android开发】TabLayout+fragment+ ViewPager2 实现通过tab切换页面
1.组件以及包名
viewpager2使用的是Androidx下的,tablayout是使用google的,这两个组件在本项目中不需要引入新的依赖。
import androidx.viewpager2.widget.ViewPager2
import com.google.android.material.tabs.TabLayout;
2.xml代码
这里没有使用过多的属性。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_F1F2F6"
android:orientation="vertical">
<!-- 不使用通用的title-->
<com.google.android.material.tabs.TabLayout
android:id="@+id/share_tab"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:tabMode="scrollable"
app:tabSelectedTextColor="@color/black"/>
<!-- 使用viewpager2 + labLayout实现切换tab-->
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/shared_device_list_viewpager2"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
3.java代码
● 需要创建一个fragment数组或者list,一个字符串数组用来存储tab的文字。
● 给viewpager2添加适配器FragmentStateAdapter,这个适配器和viewpager所使用的不同。
● 注册页面变化监听回调,在页面变化的时候执行一些操作,例如滑动和选择。、
● 给tablayout添加中介,配置tab的文本内容
● attach()方法绑定
List<Fragment> fragments = new ArrayList<>();
List<String> tabStrings = new ArrayList<>();
mViewPager2.setAdapter(new FragmentStateAdapter(getSupportFragmentManager(), getLifecycle()) {
@NonNull
@NotNull
@Override
public Fragment createFragment(int position) {
if (fragments.get(position) == null){
Log.