做出这样的切换视图
先导入包 搜索material 导入
或者
implementation 'com.google.android.material:material:1.2.1'
然后在页面添加一个tablayout 和一个viewpager
注意:根布局尽量不要使用相对布局,否则Tablayout无法点击
XMl文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.google.android.material.tabs.TabLayout
app:tabSelectedTextColor="@color/colorAccent"
app:tabIndicatorColor="@color/colorAccent"
app:tabMode="fixed"//设置导航栏模式
app:tabTextColor="@android:color/white"
app:tabGravity="fill"//设置导航条
android:background="#AACC"
android:id="@+id/tb_home"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.viewpager.widget.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/viewpage"/>
</LinearLayout>
之后在代码页面首先绑定控件,然后生成两个集合,用来存放Fragment和title
private List<Fragment> fragments;
private List<String> titles;
先添加数据
titles=new ArrayList<>();
fragments=new ArrayList<>();
titles.add(getBaseContext().getString(R.string.titles_item1));
titles.add(getBaseContext().getString(R.string.titles_item2));
titles.add(getBaseContext().getString(R.string.titles_item3));
titles.add(getBaseContext().getString(R.string.titles_item4));
fragments=new ArrayList<>();
fragments.add(new Item1Fragment());
fragments.add(new Item2Fragment());
fragments.add(new Item3Fragment());
fragments.add(new Item4Fragment());
然后绑定适配器
这里重写一个FragmentPagerAdapter,可以直接匿名内部类或者生成一个类继承FragmentPagerAdapter
class tabAdpter extends FragmentPagerAdapter {
List<String> Titel;
List<Fragment> fragments;
public tabAdpter(@NonNull FragmentManager fm, List<String> titel, List<Fragment> fragment) {
super(fm);
this.Titel = titel;
this.fragments = fragment;
}
@NonNull
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return Titel.get(position);
}//需要重写,来绑定标题
}
}
这里一定要记着重写
@Override
public CharSequence getPageTitle(int position) {
return Titel.get(position);
}//需要重写,来绑定标题
}
}
最后加上一句
tabLayout.setupWithViewPager(viewPager);
用来将tablayout和viewpager绑定