当前位置: 首页 > 后端技术 > Java

AndroidViewPager2+Fragment联动

时间:2023-04-01 22:24:06 Java

AndroidViewPager2+Fragment联动本文主要介绍ViewPager2+Fragment。上一篇简单的使用了ViewPager2来实现图片的滑动效果。然后图片view可以滑动,ViewPager2也可以滑动Fragment概览。ViewPager2官方的描述是可以滑动的形式来显示views或者Fragments,也就是提供了滑动Fragments的实现,也很简单。下面看一下实现思路1.在Activity布局文件中引入ViewPager2控件2.编写Fragments填充ViewPager23.编写Adapter实现FragmentStateAdapter下面使用实际代码显示滑动Fragment代码实现Activity布局文件中引入ViewPager2控件编写片段使用填充到ViewPager2中packagecom.johnny.slzzing;importandroid.os.Bundle;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.TextView;importandroidx.annotation.NonNull;importandroidx.annotation.Nullable;importandroidx.fragment.app.Fragment;/***一个简单的{@linkFragment}子类。*使用{@linkViewPage2Fragment#newInstance}工厂方法*创建此片段的实例。*/publicclassViewPage2FragmentextendsFragment{//TODO:重命名参数参数,选择与片段初始化参数匹配的名称,例如ARG_ITEM_NUMB个ERprivatestaticfinal字符串ARG_PARAM1="param1";privatestaticfinalStringARG_PARAM2="param2";//TODO:重命名和更改参数类型privateStringmParam1;私有字符串mParam2;publicViewPage2Fragment(){//必需的空公共构造函数}/***使用此工厂方法创建*此片段的新实例,使用提供的参数。**@paramparam1参数1。*@paramparam2参数2。*@return片段ViewPage2Fragment的新实例。*///TODO:重命名和更改参数的类型和数量publicstaticViewPage2FragmentnewInstance(Stringparam1,Stringparam2){ViewPage2Fragmentfragment=newViewPage2Fragment();捆绑参数=newBundle();args.putString(ARG_PARAM1,param1);args.putString(ARG_PARAM2,param2);fragment.setArguments(args);返回片段;}@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);if(getArguments()!=null){mParam1=getArguments().getString(ARG_PARAM1);mParam2=getArguments().getString(ARG_PARAM2);}}@OverridepublicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){//为这个片段膨胀布局returninflater.inflate(R.layout.fragment_view_page2,container,false);}@OverridepublicvoidonViewCreated(@NonNullViewview,@NullableBundlesavedInstanceState){super.onViewCreated(view,savedInstanceState);TextViewtextView=view.findViewById(R.id.fragmenttextview);textView.setText(mParam1);}}fragment_view_page2fragment很简单就在中间有一个TextView分区不同的fragment编写Adapter现实FragmentStateAdapterpackagecom.johnny.slzzing;importandroid.mos.Bundle.annotation.NonNull;导入androidx.appcompat.app.AppCompatActivity;导入androidx.fragment.app.Fragment;导入androidx.fragment.app.FragmentActivity;导入androidx.viewpager2.adapter.FragmentStateAdapter;导入androidx.viewpager2.widget.ViewPager2;导入java.util.Arrays;导入java.util.List;公共类ViewPage2FragmentActivity扩展AppCompatActivity{ViewPager2viewPage2;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_view_page2_fragment);viewPage2=findViewById(R.id.viewpager2fragment);ViewPager2FragmentAdapterviewPager2FragmentAdapter=newViewPager2FragmentAdapt呃(这个,initFragmentList());//很重要的一点!设置viewPage2为adapter这个adapter不是直接继承RecycleView.AdapterviewPage2.setAdapter(viewPager2FragmentAdapter);}//初始化3个片段privateListinitFragmentList(){ViewPage2FragmentviewPage2Fragment=ViewPage2Fragment.newInstance("IamFragment1","");ViewPage2FragmentviewPage2Fragment2=ViewPage2Fragment.newInstance("我是Fragment2","");ViewPage2FragmentviewPage2Fragment3=ViewPage2Fragment"newInstance3("IamFragment");returnArrays.asList(viewPage2Fragment,viewPage2Fragment2,viewPage2Fragment3);}//提供了FragmentStateAdapter,只需要继承即可,不需要继承RecycleView.AdapterstaticclassViewPager2FragmentAdapterextendsFragmentStateAdapter{privatefinalListfragmentList;publicFragmentAdapter2FragmentfragmentActivity,ListfragmentList){super(fragmentActivity);this.fragmentList=fragmentList;}@NonNull@OverridepublicFragmentcreateFragment(intposition){returnfragmentList.get(position);}@OverridepublicintgetItemCount(){返回fragmentList.size();}}}粉色区域的作用是可以滑动切换不同的Fragment。总结本文主要介绍了ViewPager2结合Fragment的基本用法,让我们可以快速实现滑动Fragment的功能。后面我们也可以结合BottomNavigationView来联动底部导航Bar+滑动,有机会再说吧。欢迎大家访问个人博客JohnnyHut。欢迎关注我公众号

最新推荐
猜你喜欢