ViewPager简介和简单使用

    xiaoxiao2022-07-07  199

    ViewPager

    ViewPagerFragmentTabLayout

    ViewPager

    ViewPager是实现滑动效果的控件 可以添加多个Fragment 用FragmentViewPagerAdapter适配器适配用来添加Fragment和TabLayout

    Fragment

    fragment请连接https://blog.csdn.net/SageDeceiveFiend/article/details/90414311

    TabLayout

    用来显示上方选项卡效果的控件需要先导依赖 implementation ‘com.android.support:design:28.0.0’

    案例展示

    public class Onew extends Fragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View inflate = inflater.inflate(R.layout.simsim0, container, false); ViewPager viewById = inflate.findViewById(R.id.vp5); TabLayout tb = inflate.findViewById(R.id.tb); ArrayList<Fragment> fragments = new ArrayList<>(); OneOnew oneOnew=new OneOnew(); One one = new One(); Tow tow = new Tow(); Tow tow1 = new Tow(); fragments.add(oneOnew); fragments.add(one); fragments.add(tow); fragments.add(tow1); ArrayList<String> titles = new ArrayList<>(); titles.add("推荐"); titles.add("手机"); titles.add("智能"); titles.add("电视5周年"); titles.add("笔记本"); //解决Fragment中嵌套ViewPager,切换Fragment之后ViewPager不显示的问题 Fr1 fr = new Fr1(this.getChildFragmentManager(), fragments,titles); viewById.setAdapter(fr); tb.setupWithViewPager(viewById); return inflate; } } //适配器 public class Fr1 extends FragmentPagerAdapter { ArrayList<Fragment> fragments; ArrayList<String> titles; public Fr1(FragmentManager fm, ArrayList<Fragment> fragments, ArrayList<String> titles) { super(fm); this.fragments = fragments; this.titles = titles; } @Override public Fragment getItem(int i) { return fragments.get(i); } @Override public int getCount() { return fragments.size(); } //用来展示上方选项卡 @Nullable @Override public CharSequence getPageTitle(int position) { return titles.get(position); } } //布局文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.TabLayout android:id="@+id/tb" android:layout_width="match_parent" android:layout_height="wrap_content"> </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/vp5" android:layout_below="@id/tb" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> </RelativeLayout> //主activity代码 public class Main4Activity extends AppCompatActivity { RadioButton r1; RadioButton r2; RadioButton r3; RadioButton r4; RadioButton r5; TabLayout tb; ViewPager vp; Frr frr; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main4); r1 = findViewById(R.id.r1); r2 = findViewById(R.id.r2); r3 = findViewById(R.id.r3); r4 = findViewById(R.id.r4); r5 = findViewById(R.id.r5); tb = findViewById(R.id.tb); vp = findViewById(R.id.vp); ArrayList<Fragment> fragments = new ArrayList<>(); Onew onew=new Onew(); Tow tow=new Tow(); One one=new One(); Tow tow1=new Tow(); One one1=new One(); fragments.add(onew); fragments.add(tow); fragments.add(one); fragments.add(tow1); fragments.add(one1); frr = new Frr(getSupportFragmentManager(), fragments); vp.setAdapter(frr); r1.setChecked(true); r1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { vp.setCurrentItem(0); } }); r2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { vp.setCurrentItem(1); } }); r3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { vp.setCurrentItem(2); } }); r4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { vp.setCurrentItem(3); } }); r5.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { vp.setCurrentItem(4); } }); vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int i, float v, int i1) { } @Override public void onPageSelected(int i) { if (i == 0) { r1.setChecked(true); } else if (i == 1) { r2.setChecked(true); } else if (i == 2) { r3.setChecked(true); } else if (i == 3) { r4.setChecked(true); } else if (i == 4){ r5.setChecked(true); } frr.notifyDataSetChanged(); } @Override public void onPageScrollStateChanged(int i) { frr.notifyDataSetChanged(); } }); } //主布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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=".Day13.Main4Activity"> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_above="@id/rg" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> <RadioGroup android:id="@+id/rg" android:gravity="center" android:orientation="horizontal" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content"> <RadioButton android:layout_weight="1" android:id="@+id/r1" android:button="@null" android:background="@drawable/simsim" android:layout_width="40dp" android:layout_height="60dp" /> <RadioButton android:layout_weight="1" android:id="@+id/r2" android:button="@null" android:background="@drawable/simsim" android:layout_width="40dp" android:layout_height="60dp" /> <RadioButton android:layout_weight="1" android:id="@+id/r3" android:button="@null" android:background="@drawable/simsim" android:layout_width="40dp" android:layout_height="60dp" /> <RadioButton android:layout_weight="1" android:id="@+id/r4" android:button="@null" android:background="@drawable/simsim" android:layout_width="40dp" android:layout_height="60dp" /> <RadioButton android:layout_weight="1" android:id="@+id/r5" android:button="@null" android:background="@drawable/simsim" android:layout_width="40dp" android:layout_height="60dp" /> </RadioGroup> </RelativeLayout>
    最新回复(0)