使用tabLayout实现viewPager+Fragment

效果图如下:

布局:

      

适配器

import android.app.Fragment;import android.app.FragmentManager;import android.support.v13.app.FragmentPagerAdapter;import java.util.ArrayList;import java.util.List;/** * Created by l on 2019/4/29. */public class TitleFragmentPagerAdapter  extends FragmentPagerAdapter {    private List mFragmentList=null;    private String[] titles;    public TitleFragmentPagerAdapter(FragmentManager fm) {        super(fm);    }    public TitleFragmentPagerAdapter(FragmentManager mFragmentManager,                                     ArrayList fragmentList) {        super(mFragmentManager);        mFragmentList = fragmentList;    }    public TitleFragmentPagerAdapter(FragmentManager mFragmentManager,                                     List fragmentList, String[] titles) {        super(mFragmentManager);        mFragmentList = fragmentList;        this.titles = titles;    }    @Override    public Fragment getItem(int position) {        Fragment fragment = null;        if (position < mFragmentList.size()) {            fragment = mFragmentList.get(position);        } else {            fragment = mFragmentList.get(0);        }        return fragment;    }    @Override    public CharSequence getPageTitle(int position) {        if (titles != null && titles.length > 0)            return titles[position];        return null;    }    @Override    public int getCount() {        return mFragmentList.size();    }}
import android.os.Bundle;import android.support.annotation.Nullable;import android.support.design.widget.TabLayout;import android.app.Fragment;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.example.l.instructordome.adapter.TitleFragmentPagerAdapter;import java.util.ArrayList;import java.util.List;public class ServiceFragment extends Fragment  {    TabLayout tabLayout;    ViewPager viewpager;    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment_service,container,false);        init(view);        List fragments = new ArrayList<>();        fragments.add(new LostFoodFragment());        fragments.add(new LostFoodFragment());        fragments.add(new BlankFragment());        TitleFragmentPagerAdapter adapter = new TitleFragmentPagerAdapter(getFragmentManager(), fragments, new String[]{"失物招领", "热门活动", "渤大新闻"});        viewpager.setAdapter(adapter);        tabLayout.setupWithViewPager(viewpager);        return view;    }    private void init(View view) {        tabLayout=(TabLayout)view.findViewById(R.id.tab);        viewpager=(ViewPager)view.findViewById(R.id.viewpager_server);    }    }

注意:这里涉及v4,v7,v13 的导包兼容的问题,我的一直解决方案,改成同一包名 

Android Support V4, V7, V13是什么?
本质上就是三个java library。

为什么要有support库?
如果在低版本Android平台上开发一个应用程序,而应用程序又想使用高版本才拥有的功能,就需要使用Support ,这里要经常注意,传递参数要在同一包里。

Android Support v4 是最早(2011年4月份)实现的库。用在Android1.6 (API lever 4)或者更高版本之上。它包含了相对V4, V13大的多的功能。

Android Support v7: 这个包是为了考虑Android2.1(API level 7) 及以上版本而设计的,但是v7是要依赖v4这个包的,也就是如果要使用,两个包得同时 被引用。

Android Support v13:这个包的设计是为了android 3.2及更高版本的,一般我们都不常用,平板开发中能用到。

之前在实习中遇到 手势冲突的问题,所以 重写一下ViewPager 取消联动

public class NoSrcollViewPage extends ViewPager{    private boolean isCanScroll = false;    public NoSrcollViewPage(@NonNull Context context) {        super(context);    }    public NoSrcollViewPage(@NonNull Context context, @Nullable AttributeSet attrs) {        super(context, attrs);    }    public boolean isCanScroll() {        return isCanScroll;    }    public void setCanScroll(boolean canScroll) {        isCanScroll = canScroll;    }    @Override    public void scrollTo(int x, int y) {        super.scrollTo(x, y);    }    @Override    public boolean onTouchEvent(MotionEvent ev) {        if (isCanScroll) {            return super.onTouchEvent(ev);        } else {            return false;        }    }    @Override    public void setCurrentItem(int item, boolean smoothScroll) {        super.setCurrentItem(item, smoothScroll);    }    @Override    public void setCurrentItem(int item) {        super.setCurrentItem(item);    }    @Override    public boolean onInterceptTouchEvent(MotionEvent ev) {        if (isCanScroll) {            return super.onInterceptTouchEvent(ev);        } else {            return false;        }    }}

 

 

 

更多相关文章

  1. android应用程序设置全屏
  2. Android——gradle
  3. Android中贪吃蛇游戏的学习(四)
  4. Android(安卓)studio 启动出现错误AAPT: error: resource androi
  5. android UI适配简单记录二
  6. Android获取当前WiFi的MAC地址-适配所有版本
  7. Android(安卓)文件下载 downloadManager
  8. Android_android studio使用 9patch常见问题解决
  9. Android(安卓)6.0棉花糖新特性,

随机推荐

  1. OOM原因和解决方案
  2. Android(安卓)实现对图片 Exif 的修改(And
  3. 【外刊IT评论网】有些软件很卖钱:在Androi
  4. android的帧布局,绝对布局,相对布局,表格布
  5. App模块化及工程扩展----- android
  6. Android热修复升级探索——SO库修复方案
  7. 实现在Android本地视频播放器开发
  8. Android(安卓)性能优化典范(六)
  9. ANDROID中LISTVIEW仿QQ群组向上滚动特效
  10. android中才Pull解析器生成xml文档