androidviewpager(android viewpager2 fragment)
Android ViewPager:实现滑动页面
简介:
Android的ViewPager是一种扩展自ViewGroup的容器,它能够帮助我们实现滑动页面功能,常用于导航页面、广告轮播、新闻资讯等场景。
多级标题:
一、ViewPager的基本使用
二、ViewPager和Fragment的结合使用
三、ViewPager和TabLayout的结合使用
一、ViewPager的基本使用
1.在XML布局文件中添加ViewPager组件
2.在Activity中实例化ViewPager,并设置适配器
3.创建适配器PagerAdapter
4.为ViewPager添加页面滑动监听器(可选)
二、ViewPager和Fragment的结合使用
1.创建多个Fragment
2.创建适配器FragmentPagerAdapter或FragmentStatePagerAdapter
3.为ViewPager设置适配器,并绑定Fragment
4.为FragmentPagerAdapter实现生命周期方法
三、ViewPager和TabLayout的结合使用
1.在XML布局文件中添加TabLayout组件
2.在Activity中实例化ViewPager和TabLayout,并设置适配器
3.创建适配器FragmentPagerAdapter或FragmentStatePagerAdapter
4.绑定TabLayout和ViewPager
5.自定义TabLayout的样式
内容详细说明:
一、ViewPager的基本使用
1.在XML布局文件中添加ViewPager组件
```
android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 2.在Activity中实例化ViewPager,并设置适配器 ``` ViewPager viewPager = findViewById(R.id.view_pager); viewPager.setAdapter(adapter); ``` 3.创建适配器PagerAdapter ``` public class MyPagerAdapter extends PagerAdapter { private List public MyPagerAdapter(List mList = list; } @Override public int getCount() { return mList.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(mList.get(position)); } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(mList.get(position)); return mList.get(position); } ``` 4.为ViewPager添加页面滑动监听器(可选) ``` viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); ``` 二、ViewPager和Fragment的结合使用 1.创建多个Fragment ``` public class MyFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_my, container, false); return view; } ``` 2.创建适配器FragmentPagerAdapter或FragmentStatePagerAdapter ``` public class MyPagerAdapter extends FragmentPagerAdapter { private List public MyPagerAdapter(FragmentManager fm, List super(fm); mList = list; } @Override public Fragment getItem(int position) { return mList.get(position); } @Override public int getCount() { return mList.size(); } @Override public CharSequence getPageTitle(int position) { return "Tab" + position; } ``` 3.为ViewPager设置适配器,并绑定Fragment ``` ViewPager viewPager = findViewById(R.id.view_pager); List list.add(new MyFragment()); list.add(new MyFragment()); list.add(new MyFragment()); MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager(), list); viewPager.setAdapter(adapter); ``` 4.为FragmentPagerAdapter实现生命周期方法 ``` public class MyPagerAdapter extends FragmentPagerAdapter { private List public MyPagerAdapter(FragmentManager fm, List super(fm); mList = list; } @Override public Fragment getItem(int position) { return mList.get(position); } @Override public int getCount() { return mList.size(); } @Override public void destroyItem(ViewGroup container, int position, Object object) { super.destroyItem(container, position, object); //移除Fragment Fragment fragment = mList.get(position); FragmentTransaction transaction = fragment.getFragmentManager().beginTransaction(); transaction.remove(fragment); transaction.commit(); } ``` 三、ViewPager和TabLayout的结合使用 1.在XML布局文件中添加TabLayout组件 ``` android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="scrollable" app:tabGravity="fill"/> ``` 2.在Activity中实例化ViewPager和TabLayout,并设置适配器 ``` ViewPager viewPager = findViewById(R.id.view_pager); TabLayout tabLayout = findViewById(R.id.tab_layout); List list.add(new MyFragment()); list.add(new MyFragment()); list.add(new MyFragment()); MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager(), list); viewPager.setAdapter(adapter); tabLayout.setupWithViewPager(viewPager); ``` 3.创建适配器FragmentPagerAdapter或FragmentStatePagerAdapter ``` public class MyPagerAdapter extends FragmentPagerAdapter { private List public MyPagerAdapter(FragmentManager fm, List super(fm); mList = list; } @Override public Fragment getItem(int position) { return mList.get(position); } @Override public int getCount() { return mList.size(); } @Override public CharSequence getPageTitle(int position) { return "Tab" + position; } ``` 4.绑定TabLayout和ViewPager ``` tabLayout.setupWithViewPager(viewPager); ``` 5.自定义TabLayout的样式 ``` TabLayout tabLayout = findViewById(R.id.tab_layout); tabLayout.addTab(tabLayout.newTab().setText("Tab1")); tabLayout.addTab(tabLayout.newTab().setText("Tab2")); tabLayout.addTab(tabLayout.newTab().setText("Tab3")); tabLayout.addTab(tabLayout.newTab().setText("Tab4")); tabLayout.addTab(tabLayout.newTab().setText("Tab5")); for (int i = 0; i < tabLayout.getTabCount(); i++) { TabLayout.Tab tab = tabLayout.getTabAt(i); if (tab != null) { tab.setCustomView(R.layout.item_custom_tab);//设置自定义布局 TextView textView = Objects.requireNonNull(tab.getCustomView()).findViewById(R.id.tv_tab); textView.setText("Tab" + i);//设置文本内容 } ```