原创 android之ViewPager与TabLayout

2021-6-17 11:39 2402 17 17 分类: 软件与OS 文集: android studio

使用 TabLayout 很容易实现选项卡的功能。这里将结合 ViewPagerFragmentTabLayout实现一个具有选项卡功能的程序。本例再上篇讲解的ViewPagerFragment实例上修改,请结合上篇实例参考。

要实现这样一个程序,首先需要在布局文件中加入 TabLayoutMainActivity中对应的布局文件代码如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. android:orientation="vertical"
  8. tools:context=".MainActivity">
  9. <com.google.android.material.tabs.TabLayout
  10. android:id="@+id/tab"
  11. app:tabMode="fixed"
  12. android:layout_width="match_parent"
  13. android:layout_height="wrap_content" />
  14. <androidx.viewpager.widget.ViewPager
  15. android:id="@+id/viewPager"
  16. android:layout_width="match_parent"
  17. android:layout_height="match_parent"/>
  18. </LinearLayout>

完成这些后,3Fragment类文件不变,修改适配器类:

  1. package com.rfstar.viewpagertest03;
  2. import androidx.fragment.app.Fragment;
  3. import androidx.fragment.app.FragmentManager;
  4. import androidx.fragment.app.FragmentPagerAdapter;
  5. import java.util.List;
  6. public class FragmentAdapter extends FragmentPagerAdapter {
  7. private List<Fragment> fragmentList;
  8. private List<String> tabList;
  9. public FragmentAdapter(FragmentManager fm,List<Fragment>fragmentList,List<String>tabList)
  10. {
  11. super(fm);
  12. this.fragmentList=fragmentList;
  13. this.tabList=tabList;
  14. }
  15. @Override
  16. public Fragment getItem(int position) {
  17. return fragmentList.get(position);
  18. }
  19. @Override
  20. public int getCount() {
  21. return fragmentList.size();
  22. }
  23. @Override
  24. public CharSequence getPageTitle(int position)
  25. {
  26. return tabList.get(position);
  27. }
  28. }

通过观察修改之后的适配器类可以发现其实就是加入了一个存储选项卡内容的列表以及一个获取选项卡内容的方法。MainActivity的代码如下:

  1. package com.rfstar.viewpagertest03;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import androidx.fragment.app.Fragment;
  4. import androidx.fragment.app.FragmentManager;
  5. import androidx.viewpager.widget.ViewPager;
  6. import android.os.Bundle;
  7. import android.view.View;
  8. import android.widget.TableLayout;
  9. import com.google.android.material.tabs.TabLayout;
  10. import java.util.ArrayList;
  11. import java.util.List;
  12. public class MainActivity extends AppCompatActivity {
  13. @Override
  14. protected void onCreate(Bundle savedInstanceState) {
  15. super.onCreate(savedInstanceState);
  16. setContentView(R.layout.activity_main);
  17. FragmentManager fragmentManager=getSupportFragmentManager();
  18. List<Fragment> fragments=new ArrayList<Fragment>();
  19. fragments.add(new FirstFragment());
  20. fragments.add(new SecondFragment());
  21. fragments.add(new ThirdFragment());
  22. List<String> tabs=new ArrayList<>();
  23. tabs.add("首页");
  24. tabs.add("社区");
  25. tabs.add("新闻");
  26. FragmentAdapter fragmentAdapter=new
  27. FragmentAdapter(fragmentManager,fragments,tabs);
  28. ViewPager viewPager=(ViewPager)findViewById(R.id.viewPager);
  29. viewPager.setAdapter(fragmentAdapter);
  30. TabLayout tabLayout= (TabLayout) findViewById(R.id.tab);
  31. tabLayout.setupWithViewPager(viewPager);
  32. }
  33. }

此时运行程序就出现了选项卡功能,不管是点击选项卡标签还是滑动界面都可以进行界面切换,效果如

android studio工具及手机模拟器以及更多工程源代码下载请前往微信公众号:大鸟科创空间,回复:android studio即可获取。

作者: 大鸟科创空间, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3949041.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
17
关闭 站长推荐上一条 /2 下一条