使用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获取当前WiFi的MAC地址-适配所有版本
  3. android 发送语音功能和ios交互格式aac
  4. Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程
  5. android学习笔记(2)---第一个Android应用程序的创建、修改、打包、
  6. android 去掉应用程序自带的黑色的头部横条
  7. 如何使用android中的搜索功能
  8. Android应用程序版本切换

随机推荐

  1. android各个版本的区别——API变更
  2. Android中颜色透明度对应16进制值
  3. android jni 多线程编程 join thread
  4. Android中解析xml的几种方式
  5. Android NDK, Revision 8b 发布
  6. Android Studio 3.0 gradle提示太老 解决
  7. android 数据库
  8. Android开发视频教程
  9. android系统编译的网站
  10. Android SQLite数据库实例