TableLayout和Viewpager实现切换
因为我是在之前的基础上写的,所以这个TableLayout和Viewpager实际上是写在Fragment上的。要写到Activity里其实也是一样的啦。
先看效果图,原谅我不会动态图,只能截个图啦
布局文件
app:tabIndicatorcolor意思是选中的导航条的颜色。
app:tabSelectesTextColor是选中的导航条的文字颜色。
app:tabTextColor 是没有选中的导航条文字的颜色。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.design.widget.TabLayout android:id="@+id/tab" android:layout_width="fill_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/selectTable" app:tabSelectedTextColor="@color/selectTable" app:tabTextColor="@color/black" /> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
java代码
import android.os.Bundle; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.lvyequeen.mystudysummry.R; import com.lvyequeen.mystudysummry.adapters.FragmentVpAdapter; import java.util.ArrayList; import java.util.List; public class CertificFragment extends Fragment { private ViewPager vp; private TabLayout tab; private List<String> tablist = new ArrayList<>(); private List<View> views = new ArrayList<>(); private FragmentVpAdapter fragmentVpAdapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { initViews(); initTabStr(); View view = inflater.inflate(R.layout.fragment_certific, null); tab = ((TabLayout) view.findViewById(R.id.tab)); vp = ((ViewPager) view.findViewById(R.id.vp)); tab.setTabMode(TabLayout.MODE_FIXED); ; i++) { tab.addTab(tab.newTab().setText(tablist.get(i))); } fragmentVpAdapter = new FragmentVpAdapter(views, tablist); vp.setAdapter(fragmentVpAdapter); // 将tablelayout和ViewPager关联起来 tab.setupWithViewPager(vp); tab.setTabsFromPagerAdapter(fragmentVpAdapter); return view; } /** * 初始化Viewpager的每个页面内容,这里为了简单,就直接new的视图 * 如果想要不同布局的内容,就按ViewPager的使用方式就行了。 */ private void initViews() { views.clear(); ; i++) { TextView view = new TextView(getContext()); view.setText(i + 1 + "个viewpager的填充界面"); views.add(view); } } /** * 同样为了简单,标题栏的内容就这么附值了。 */ private void initTabStr() { tablist.clear(); ; i++) { tablist.add("标题" + (1 + i)); } } }
适配器的代码,和平时viewpager的写法是一样的,但是多了一个方法getPageTitle();
import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; import java.util.List; public class FragmentVpAdapter extends PagerAdapter { // 这个是viewpager的填充视图 private List<View> views; // 这个是table导航条里面的内容填充 private List<String> tabstrs; public FragmentVpAdapter(List<View> views, List<String> tabstrs) { this.views = views; this.tabstrs = tabstrs; } @Override public int getCount() { return views.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(views.get(position)); return views.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(views.get(position)); } // 这个是和tablelayout相关的 @Override public CharSequence getPageTitle(int position) { return tabstrs.get(position); } }
TableLayout和Viewpager实现切换的更多相关文章
- ViewPager -- Fragment 切换卡顿 性能优化
当ViewPager切换到当前的Fragment时,Fragment会加载布局并显示内容,如果用户这时快速切换ViewPager,即 Fragment需要加载UI内容,而又频繁地切换Fragment, ...
- Android为ViewPager增加切换动画——使用属性动画.
ViewPager作为Android最常用的的组件之一,相信大家在项目中会频繁的使用到的,例如利用ViewPager制作引导页.轮播图,甚至做整个app的表现层的框架等等. Android3.0以下不 ...
- 【原创】【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析
ViewPager中切换界面Fragment被销毁的问题分析 1.使用场景 ViewPager+Fragment实现界面切换,界面数量>=3 2.Fragment生命周期以及与Activ ...
- 转载【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析
ViewPager中切换界面Fragment被销毁的问题分析 原文链接 http://www.cnblogs.com/monodin/p/3866441.html 1.使用场景 ViewPager+ ...
- Android至ViewPager添加切换动画——使用属性动画
转载请注明出处:http://blog.csdn.net/allen315410/article/details/44200623 ViewPager作为Android最经常使用的的组件之中的一个.相 ...
- viewPager的切换动画
今天在看苏州通的代码,里面有个引导的代码,涉及到viewPager的切换动画: DepthPageTransformer : package com.soyoungboy.guide; import ...
- ViewPager中切换界面Fragment被销毁的问题
ViewPager中切换界面Fragment被销毁的问题分析 使用ViewPager+Fragment实现界面切换,当界面数量大于3时,出现二次滑动后数据消失的情况,下面由Fragment生命周期进行 ...
- Android为ViewPager添加切换动画——自己定义ViewPager
转载请注明出处:http://blog.csdn.net/allen315410/article/details/44224517 在上篇博客中,我写了一个使用属性动画为ViewPager加入切换动画 ...
- ViewPager页面切换特效
ViewPager页面切换特效如下效果 看效果: 效果1: 效果2: 下面就开始讲解如何实现这两个页面翻转效果 1.首先你得会ViewPager控件的使用(废话!现在还有人不会使用吗???!!) 2. ...
随机推荐
- Hibernate使用自定义脚本替换注解或者xml文件中的自动生成表结构
本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/50534361 我们都清楚,可以使用hibernate的metada ...
- 20160223.CCPP体系详解(0033天)
程序片段(01):MyArray.h+MyArray.c+main.c 内容概要:数组库 ///MyArray.h #pragma once #define DT int//类型通用 typedef ...
- PGM:部分观测数据
http://blog.csdn.net/pipisorry/article/details/52599451 基础知识 数据缺失的三种情形: 数据的似然和观测模型 Note: MLE中是将联合概率P ...
- Why Doesn't Python Have Switch/Case?
Why Doesn't Python Have Switch/Case? Tuesday, June 09, 2015 (permalink) Unlike every other programmi ...
- linux中probe函数中传递的参数来源(上)
点击打开链接 上一篇中,我们追踪了probe函数在何时调用,知道了满足什么条件会调用probe函数,但probe函数中传递的参数我们并不知道在何时定义,到底是谁定义的,反正不是我们在驱动中定义的(当然 ...
- 深度学习&机器学习资源汇总1
本篇博客的目地,是对工作学习过程中所遇所见的一些有关深度学习.机器学习的优质资源,作分类汇总,方便自己查阅,也方便他人学习借用. 主要会涉及一些优质的理论书籍和论文.一些实惠好用的工具库和开源库.一些 ...
- iOS下JS与OC互相调用(八)--Cordova详解+实战
扯两句,可以跳过 由于项目中Cordova相关功能一直是同事在负责,所以也没有仔细的去探究Cordova到底是怎么使用的,又是如何实现JS 与 OC 的交互.所以我基本上是从零开始研究和学习Cordo ...
- activity的启动模式和栈管理
在学习Android的过程中,Intent是我们最常用Android用于进程内或进程间通信的机制,其底层的通信是以Binder机制实现的,在物理层则是通过共享内存的方式实现的. Intent ...
- mvn管理项目jar包
Maven是一个采用纯Java编写的开 源项目管理工具.Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xm ...
- Building System之 get_abs_build_var() && get_build_var()
点击打开链接 1.get_abs_build_var() 和 get_build_var()的实现都在build/envsetup.sh中. 2.在buld目录下grep这两个函数可知:这两个函数只在 ...