ViewPager与Tab结合使用
2024-08-27 08:15:10
我们有时候需要 标题页卡与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);//页卡标题
} }
这样大功告成
最新文章
- C#调用exe文件,IIS发布后无法掉用本地exe程序的解决方法
- 使用maven下载jar包的source和javadoc
- topshelf包装redis为windows服务
- PDO 学习与使用 ( 一 ) :PDO 对象、exec 方法、query 方法与防 SQL 注入
- 利用K2和Microsoft Dynamics CRM构建业务App的5大理由
- 20145305《Java程序设计》实验三
- 【转】JSONP简介
- 技术路线 vs 技术管理路线
- [原创]Hadoop-2.5.2-HA原文译
- Python3学习之路~9.2 操作系统发展史介绍、进程与线程区别、线程语法、join、守护线程
- OO_多项式求导_单元总结
- super()方法
- SQL注入之Sqli-labs系列第七篇(基于root权限读写注入)
- cocos代码研究(16)Widget子类RadioButton学习笔记
- BZOJ3193: [JLOI2013]地形生成
- 已知UIScrollView放大后的Frame和放大之前的Frame计算放大的瞄点坐标
- javascript把json串转成对象
- 使用Django完成CRM管理系统
- Python爬虫教程-13-爬虫使用cookie爬取登录后的页面(人人网)(下)
- windows下配置protobuf2.6.1
热门文章
- ASP.NET Aries JSAPI 文档说明:AR.DataGrid
- DOM对象模型接口规范中的四个基本接口
- mysql sleep进程过多,应用级配置
- [Java Collection]List分组之简单应用.
- idea报错:error java compilation failed internal java compiler error
- My97DatePicker时间控件在项目中的应用
- 计算机程序的思维逻辑 (40) - 剖析HashMap
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)
- 深入浅出JavaScript之this
- 【Spring-web】RestTemplate源码学习——梳理内部实现过程