开源控件ViewPagerIndicator学习
导航条指示器。ViewPagerIndicator
地址 https://github.com/JakeWharton/ViewPagerIndicator
Style
是重用控件的一种技术。类似CSS
。作用范围只是一个控件
而
Theme
本质也是一种一种Style
技术。作用范围是页面,整个应用程序。
1. 创建Activity
,和布局。
<!-- 指示器 indicator -->
<com.viewpagerindicator.TabPageIndicator
android:id="@+id/tpi_Indicator
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#FFFFFF" />
<!-- 内容 -->
<android.support.v4.view.ViewPager
android:id="@+id/vp_page"
android:layout_width="match_parent"
android:layout_height="match_parent" />
2. 绑定数据 。
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取到控件
ViewPager vpPager = (ViewPager) findViewById(R.id.vp_page);
tabPageIndicator = (TabPageIndicator) findViewById(R.id.tpi_Indicator);
// 设置数据
vpPager.setAdapter(new MyFragmentAdapter(getSupportFragmentManager()));
tabPageIndicator.setViewPager(vpPager);
}
private class MyFragmentAdapter extends FragmentPagerAdapter
{
public MyFragmentAdapter(FragmentManager fm)
{
super(fm);
framgents.add(new FirstFragment());
framgents.add(new SencodFragment());
framgents.add(new ThirdFragment());
framgents.add(new FourFragment());
titleList.add("日本");
titleList.add("美国");
titleList.add("加拿大");
titleList.add("芝加哥");
}
@Override
public Fragment getItem(int arg0)
{
return framgents.get(arg0);
}
@Override
public int getCount()
{
return framgents.size();
}
//设置标题
@Override
public CharSequence getPageTitle(int position)
{
return titleList.get(position);
}
}
3. 设置theme
. 和控件的样式。
<style name="AppBaseTheme" parent="android:Theme.Light">
<item name="vpiTabPageIndicatorStyle">@style/CustomTabPageIndicator</item>
</style>
<!-- -->
<!-- <item name="android:divider">@drawable/custom_tab_indicator_divider</item> -->
<style name="CustomTabPageIndicator" parent="Widget.TabPageIndicator">
<item name="android:background">@drawable/custom_tab_indicator</item>
<item name="android:textAppearance">@style/CustomTabPageIndicator.Text</item>
<item name="android:textColor">#FF555555</item>
<item name="android:textSize">16sp</item>
<item name="android:paddingLeft">8dp</item>
<item name="android:paddingRight">8dp</item>
<item name="android:fadingEdge">horizontal</item>
<item name="android:fadingEdgeLength">8dp</item>
</style>
<!-- 字体我也那过来 -->
<style name="CustomTabPageIndicator.Text" parent="android:TextAppearance.Medium">
<item name="android:typeface">monospace</item>
</style>
动态添加标题
- 设置布局
- 添加事件。动态标题更新。
*/
public void addTitle(View view)
{
framgents.add(new AddFragment());
titleList.add("新页面");
// 通过页面刷新
mAdapter.notifyDataSetChanged();
// 指示器也要更新
tabPageIndicator.notifyDataSetChanged();
// 页面跟踪
vpPager.setCurrentItem(framgents.size()-1);
}
Fragment
Bug
修复。
在页面切换的时候。用户在本页面输入的数据会丢失。
原因:碎片在每次创建的时候都会onCreateView`也就是每次都要加载一次布局。解决办法保存上一次布局就好
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// TODO Auto-generated method stub
if (rootView == null) {
rootView = View.inflate(getActivity(), getLayoutId(), null);
initView(rootView);
} else {
// ViewGroup :所有布局的父类
ViewGroup parent = (ViewGroup) rootView.getParent();
if (parent != null)// 已经添加
{
parent.removeView(rootView);
}
}
return rootView;
}
开源控件ViewPagerIndicator学习的更多相关文章
- 开源控件ViewPagerIndicator的使用
此文转载自http://www.jianshu.com/p/a2263ee3e7c3 前几天学习了ViewPager作为引导页和Tab的使用方法.后来也有根据不同的使用情况改用Fragment作为Ta ...
- 分页控件AspNetPager学习笔记
1.AspNetPager简介 AspNetPager是一款开源.简单易用.可定制化等等各种优点的Web分页控件. 2.使用方法 1)下载AspNetPager.dll文件(http://www.we ...
- Win10 UWP开发系列——开源控件库:UWPCommunityToolkit
在开发应用的过程中,不可避免的会使用第三方类库.之前用过一个WinRTXamlToolkit.UWP,现在微软官方发布了一个新的开源控件库—— UWPCommunityToolkit 项目代码托管在G ...
- visual studio 2015引入开源控件DockPanel(最简单的方法)
一.DockPanel简介 DockPanel是一个开源控件,能够实现子窗口的浮动,在官方给的demo有演示,在vs2017微软已经集成进入常用控件中.我主要使用的是多窗口浮动,和tabControl ...
- 开源整理:Android App新手指引开源控件
开源整理:Android App新手指引开源控件 一个App第一次与用户接触或者发生大版本更新时,常常会用户进行新手引导,而一个好的新手指引,往往能够方便新用户快速了解操作你的应用功能.新手指引的重要 ...
- 转载: 开源整理:Android App新手指引开源控件
http://blog.coderclock.com/2017/05/22/android/open-source-android-app-guide-view-library/ 开源整理:Andro ...
- 我的第一个开源控件-DragGridView
我的第一个开源控件出炉了,希望各个小伙伴给个star,支持下.项目地址 1. 前言 因为项目须要,要做一个相似腾讯视频.频道管理.拖拽排序的效果.这个控件是在原地址 之上改造出来的.先看下效果图. 1 ...
- .Net 开源控件 NPlot使用小结
NPlot是一款非常难得的.Net平台下的图表控件,能做各种曲线图,柱状图,饼图,散点图,股票图等,而且它免费又开源,使用起来也非常符合程序员的习惯.授权方式为BSD许可证. 下载链接: http:/ ...
- FMX开源控件
FMX开源控件 这是群友谢顿做的控件,必须赞一个! https://github.com/zhaoyipeng/FMXComponents 这是loki的: https://sourceforge.n ...
随机推荐
- 基于WebForm+EasyUI的业务管理系统形成之旅 -- 总体介绍
一.系统总体介绍 企业业务管理系统是针对经营企业管理而开发的专业管理软件, 是以“精细管理.过程监控”为设计理念,全面满足企业的信息化管理需求,充分发挥专业.平台.灵活等优点. 集进销存.财务.CRM ...
- vpn分配多ip的配置
1,创建vpn路由和远程访问 --配置并启用和路由远程访问--自定义配置--选择“vpn访问”,“nat和基本防火墙. 2,vpn配置ip路由选择(nat/基本防火墙)--新增接口(选择本地网卡)-- ...
- Html笔记(五)表格
表格标签: <table> 组成: 标题标签: <caption>给表格提供标题. 表头标签: <th> ,一般对表格的第一行或者第一列进行格式化,就是粗体显示,并 ...
- vim中不能使用“+y拷贝
新的机器上安装vim后可以使用yy复执,但是”+y拷贝到系统剪切板不行.按下面操作解决: 1.首先要检查你的vim版本是否支持+clipboard,命令是:version 或者可以输入:reg 查看是 ...
- UVa10534 - Wavio Sequence(LIS)
题目大意 给定一个长度为n的整数序列,求个最长子序列(不一定连续),使得该序列的长度为奇数2k+1,前k+1个数严格递增,后k+1个数严格递减.注意,严格递增意味着该序列中的两个相邻数不能相同.n&l ...
- Codeforces245H - Queries for Number of Palindromes(区间DP)
题目大意 给定一个字符串s,q个查询,每次查询返回s[l-r]含有的回文子串个数(题目地址) 题解 和有一次多校的题目长得好相似,这个是回文子串个数,多校的是回文子序列个数 用dp[i][j]表示,s ...
- 【ACM/ICPC2013】树形动态规划专题
前言:按照计划,昨天应该是完成树形DP7题和二分图.最大流基础专题,但是由于我智商实在拙计,一直在理解树形DP的思想,所以第二个专题只能顺延到今天了.但是昨天把树形DP弄了个5成懂我是很高兴的!下面我 ...
- 常用apt cli
常用的APT命令参数: apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明.大小.版本等 sudo apt-get ...
- PC-红警联机问题与下载
或许不是软件问题: 你做好相关设置了吗? 红警局域网联机的具体方法: 适用于原版红警.尤里复仇,及任何同样的扩展版. 第一步:安装IPX协议. 方法: 控制面板——网络连接(或网上邻居·属性)——本地 ...
- 正则匹配:Email 密码强度 身份证 手机号 日期 数字每4个字空一格等
正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑.熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升.下面是在前端开发中经常 ...