我们有时候需要 标题页卡与ViewPager结合使用,其实原理也很简单。

不过工程中要引入android-support-design.jar

android studio中需要在配置中添加:

dependencies {     
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:support-v4:23.4.0'
compile 'com.android.support:design:23.4.0' }
并且版本要一致,否则不能达到效果

首先是布局文件

<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:background="@color/search_bg_top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorColor="@color/white"
app:tabTextColor="@color/white"
app:tabSelectedTextColor="@color/bg_gray" />
<android.support.v4.view.ViewPager
android:id="@+id/vp_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.0" />

接下来是activity

 private List<String> mTitleList=new ArrayList();//页卡标题集合
private View view1, view2;//页卡视图
private List<View> mViewList = new ArrayList();//页卡视图集合
private TabLayout mTabLayout;
 private ViewPager mViewPager;
 private LayoutInflater mInflater; mViewPager = (ViewPager) findViewById(R.id.vp_view);
mTabLayout = (TabLayout) findViewById(R.id.tabs); mInflater = LayoutInflater.from(this); view1 = mInflater.inflate(R.layout.search_data, null);
view2 = mInflater.inflate(R.layout.search_vp_chart, null);
//添加页卡视图
mViewList.add(view1);
mViewList.add(view2); //添加页卡标题
mTitleList.add("数据");
mTitleList.add("图表"); mTabLayout.setTabMode(TabLayout.MODE_FIXED);//设置tab模式,当前为系统默认模式
mTabLayout.addTab(mTabLayout.newTab().setText(mTitleList.get(0)));//添加tab选项卡
mTabLayout.addTab(mTabLayout.newTab().setText(mTitleList.get(1))); MyPagerAdapter mAdapter = new MyPagerAdapter(mViewList);
mViewPager.setAdapter(mAdapter);//给ViewPager设置适配器
mTabLayout.setupWithViewPager(mViewPager);//将TabLayout和ViewPager关联起来。
mTabLayout.setTabsFromPagerAdapter(mAdapter);//给Tabs设置适配器 class MyPagerAdapter extends PagerAdapter {
private List<View> mViewList; public MyPagerAdapter(List<View> mViewList) {
this.mViewList = mViewList;
} @Override
public int getCount() {
return mViewList.size();//页卡数
} @Override
public boolean isViewFromObject(View view, Object object) {
return view == object;//官方推荐写法
} @Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(mViewList.get(position));//添加页卡
return mViewList.get(position);
} @Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(mViewList.get(position));//删除页卡
} @Override
public CharSequence getPageTitle(int position) {
return mTitleList.get(position);//页卡标题
} }

这样大功告成

最新文章

  1. C#调用exe文件,IIS发布后无法掉用本地exe程序的解决方法
  2. 使用maven下载jar包的source和javadoc
  3. topshelf包装redis为windows服务
  4. PDO 学习与使用 ( 一 ) :PDO 对象、exec 方法、query 方法与防 SQL 注入
  5. 利用K2和Microsoft Dynamics CRM构建业务App的5大理由
  6. 20145305《Java程序设计》实验三
  7. 【转】JSONP简介
  8. 技术路线 vs 技术管理路线
  9. [原创]Hadoop-2.5.2-HA原文译
  10. Python3学习之路~9.2 操作系统发展史介绍、进程与线程区别、线程语法、join、守护线程
  11. OO_多项式求导_单元总结
  12. super()方法
  13. SQL注入之Sqli-labs系列第七篇(基于root权限读写注入)
  14. cocos代码研究(16)Widget子类RadioButton学习笔记
  15. BZOJ3193: [JLOI2013]地形生成
  16. 已知UIScrollView放大后的Frame和放大之前的Frame计算放大的瞄点坐标
  17. javascript把json串转成对象
  18. 使用Django完成CRM管理系统
  19. Python爬虫教程-13-爬虫使用cookie爬取登录后的页面(人人网)(下)
  20. windows下配置protobuf2.6.1

热门文章

  1. ASP.NET Aries JSAPI 文档说明:AR.DataGrid
  2. DOM对象模型接口规范中的四个基本接口
  3. mysql sleep进程过多,应用级配置
  4. [Java Collection]List分组之简单应用.
  5. idea报错:error java compilation failed internal java compiler error
  6. My97DatePicker时间控件在项目中的应用
  7. 计算机程序的思维逻辑 (40) - 剖析HashMap
  8. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)
  9. 深入浅出JavaScript之this
  10. 【Spring-web】RestTemplate源码学习——梳理内部实现过程