ViewPager2+Fragment+TabLayout的简单使用

先附上效果图:

项目结构:

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");
    }
}

猜你喜欢

转载自blog.csdn.net/qq_52135683/article/details/121211518#comments_26670613
今日推荐