Layout
activity_test.xml:
<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" android:orientation="vertical"> <!--顶部标签--> <com.google.android.material.tabs.TabLayout android:id="@+id/tableLayout" android:layout_width="match_parent" android:layout_height="50dp" app:tabTextColor="@color/black"/> <!-- 翻页视图--> <androidx.viewpager.widget.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
Activity
TestActivity:
public class KDateActivity extends AppCompatActivity { private TabLayout tabLayout; private ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); tabLayout = findViewById(R.id.tableLayout); viewPager = findViewById(R.id.viewpager); //关联tablaLayout和viewPager tabLayout.setupWithViewPager(viewPager); //准备titles集合 List<String> titles = new ArrayList<>(); titles.add("Fragment1"); titles.add("Fragment2"); titles.add("Fragment3"); titles.add("Fragment4"); titles.add("Fragment5"); titles.add("Fragment6"); titles.add("Fragment7"); titles.add("Fragment8"); titles.add("Fragment9"); 准备Fragment集合 List<Fragment> list = new ArrayList<>(); list.add(new TestFragment()); list.add(new TestFragment()); list.add(new TestFragment()); list.add(new TestFragment()); list.add(new TestFragment()); list.add(new TestFragment()); list.add(new TestFragment()); list.add(new TestFragment()); list.add(new TestFragment()); //创建KDateAdapter对象 MyAdapter myAdapter = new MyAdapter(getSupportFragmentManager(), list, titles); //设置Adapter viewPager.setAdapter(myAdapter); int defaultPage = 0; // 默认选中第1个页面,索引从0开始 viewPager.setCurrentItem(defaultPage); // 设置ViewPager的offscreenPageLimit为0,这样ViewPager只会加载当前可见的页面和相邻的Fragment viewPager.setOffscreenPageLimit(0); } }
MyAdapter:
public class MyAdapter extends FragmentPagerAdapter { private List<Fragment> fragmentList; private List<String> titles; public MyAdapter (@NonNull FragmentManager fm, List<Fragment> list, List<String> titles) { super(fm); this.fragmentList=list; this.titles=titles; } //获取当前滑动到fragment对象 @NonNull @Override public Fragment getItem(int position) { return fragmentList.get(position); } //获取fragment个数 @Override public int getCount() { return fragmentList.size(); } }
其中一个TestFragment:
public class KDateTimeFragment extends Fragment { // 创建该 Fragment 的视图 @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_test, container, false); Log.d(TAG,"onCreateView-------"); // 可以在这里对视图进行初始化和其他操作 TextView textView = (TextView)findById(R.id.testview) return view; }
}
fragment_test:
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/textview" android:text="这是第一个Fragment页面"/> </androidx.constraintlayout.widget.ConstraintLayout>