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. ...
随机推荐
- Matplotlib Toolkits:python高级绘图库seaborn
http://blog.csdn.net/pipisorry/article/details/49515745 Seaborn介绍 seaborn (Not distributed with matp ...
- 无需超级用户mpi多机执行
在之前的一篇博文中(Linux下mpi环境配置与执行步骤(Ubuntu为例) ),有讨论过如何使用MPI在两个不同的机器上执行程序,在那篇博文中使用了超级用户权限.不幸的是,有些情况下,我们不能拥有操 ...
- 驱动中如何给ring3层应用程序提权
为什么会有这个需求就不用我多说了吧:) 目前在驱动中提权我知道的有三种办法 1. 该方法来源于stoned bootkit,主要原理是把services.exe的EPROCESS中的Token值取出来 ...
- Java进阶(四十四)线程与进程的特征及区别
线程与进程的特征及区别 定义及特征 进程 指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令.数据和堆栈等组成的,是一个能独立运行的活动实体. 进程的特征: 1.动态性:进程的实质是 ...
- Java学习之继承中的执行顺序详解
代码块(理解) (1)用{}括起来的代码. (2)分类: A:局部代码块 用于限定变量的生命周期,及早释放,提高内存利用率. B:构造代码块 把多个构造方法中相同的代码可以放到这里,每个构造方法执行前 ...
- 集合框架之Map接口
Map是将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. Map 接口提供三种collection视图,允许以键集.值集或键-值映射关系集的形式查看某个映射的内容.映射顺序定 ...
- Dynamics CRM2016 站点地图Bug之KnowledgeArticle不显示
在CRM2016中对知识库功能进行了加强,新加入了KnowledgeArticle的实体,但在学习的过程中发现了微软的一个bug 下图是我在最新的2016online的版本上看到的service下的s ...
- velocity中加载模板文件的方式
velocity有多中种方式供我们去加载我们自定义的模板文件,下面详细的介绍使用的方法. 1.1.1. 加载classpath目录下的模板文件 使用classpath方式加载,是我们经常用到的一种方式 ...
- 3.1、Android Studio在虚拟机中运行应用
Android虚拟机Monitor一个设备并且显示在你的开发计算机上.它可以允许你在不适用硬件设备的情况下开发.测试你的Android应用.虚拟机支持Android手机,Android Wear和平板 ...
- 【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态
一. Objective-C 方法详解 1. 方法属性 (1) OC 方法传参机制 Object-C 方法传参机制 : OC 中得参数传递都是值传递, 传入参数的是参数的副本; -- 基本类型 (值传 ...