ViewPager和碎片Fragment和TabLayout

干货  1  导依赖并且将依赖改成自己的版本 如果导过了可以忽略此步骤 :  

   implementation 'com.android.support:design:26.1.0'

2: 布局      温馨提醒: TabLayout包不要导错

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".Fragments.BlankFragment2">
<android.support.design.widget.TabLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/tab"></android.support.design.widget.TabLayout>
   <android.support.v4.view.ViewPager
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:id="@+id/pager"></android.support.v4.view.ViewPager>

</LinearLayout>

3 在MainActivity中找你的定义的俩大控件并进行设置

 tab.setupWithViewPager(pager);
上边方法解释此方法是设置咋们定义的字符跟Fragment进行同步也就是在我滑动的时候我的TabLayout也进行滑动

4: 定义适配器 就好比我们的ListView, ViewPager也是需要适配器的


import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.ArrayList;

public class FragmentViewPagerAdapter extends FragmentPagerAdapter {
    ArrayList<String>tit;   // 此集合是我们定义的汉字和ViewPager结合使用的
    ArrayList<Fragment>list;  //存放Fragment

    public FragmentViewPagerAdapter(FragmentManager fm, ArrayList<String> tit, ArrayList<Fragment> list) {
        super(fm);
        this.tit = tit;
        this.list = list;
    }//利用构造进行赋值

    @Override
    public Fragment getItem(int position) {
        return list.get(position);
    }//此方法返回的当前 Fragment  通过索引得到


    @Override
    public int getCount() {
        return list.size();
    }//返回  Fragment 个数


    //重写getPageTitle 方法返回我们定义好的Stirng值  
    @Override
    public CharSequence getPageTitle(int position) {
        return tit.get(position) ;
    }
}

定义好适配器接下来 就看适配器需要什么我们进行传什么就OK当然下边的逻辑代码我一并送上   

 当然 tit集合和 list集合的元素个数一定要相等;

ArrayList<String>tit=new ArrayList<>();
        ArrayList<Fragment>list=new ArrayList<>();
        tit.add("景");
        tit.add("氏");
        try {
            list.add(BlankFragment3.class.newInstance());
            list.add(BlankFragment4.class.newInstance());
        } catch (java.lang.InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        FragmentViewPagerAdapter fragmentViewPagerAdapter = new FragmentViewPagerAdapter(getChildFragmentManager(), tit, list);
        pager.setAdapter(fragmentViewPagerAdapter);

就这OK 

效果图实在抱歉不知道为什么上传老是报错。

猜你喜欢

转载自blog.csdn.net/qq_42046338/article/details/81137235