先附上效果图:
项目结构:
MainActivity_xml代码:
FragmentStateAdapter代码:
Mainactivity.java代码:
public class MainActivity extends AppCompatActivity { ArrayList<Fragment> lists; ArrayList<String> textTabData; ViewPager2 viewPager2; TabLayout tabLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewPager2=findViewById(R.id.viewPager2); tabLayout=findViewById(R.id.tabLayout); //初始化数据 init(); //创建适配器 MyFragmentAdapter myFragmentAdapter=new MyFragmentAdapter(this,lists); viewPager2.setAdapter(myFragmentAdapter); //tablayout的一些简单设置 //设置字体颜色,第一个参数代表未点击时的字体颜色,第二个参数代表点击后的颜色 tabLayout.setTabTextColors(R.color.black,R.color.teal_700); //点击单个tab时背景为透明色 tabLayout.setTabRippleColor(ColorStateList.valueOf(Color.TRANSPARENT)); //让viewpager2与tablayout关联,实现滑动效果(滑动fragment底部tab变化,tab滑动fragment跟着滑动) new TabLayoutMediator(tabLayout, viewPager2, new TabLayoutMediator.TabConfigurationStrategy() { @Override public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) { tab.setText(textTabData.get(position)); } }).attach();//一定要attach() //给每一个tab设置图片 tabLayout.getTabAt(0).setIcon(R.drawable.p1); tabLayout.getTabAt(1).setIcon(R.drawable.pi2); tabLayout.getTabAt(2).setIcon(R.drawable.pi3); tabLayout.getTabAt(3).setIcon(R.drawable.pi4); } private void init() { lists=new ArrayList<>(); lists.add(new Fragment1()); lists.add(new Fragment2()); lists.add(new Fragment3()); lists.add(new Fragment4()); textTabData=new ArrayList<>(); textTabData.add("1"); textTabData.add("2"); textTabData.add("3"); textTabData.add("4"); } }