开源控件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 ...
随机推荐
- diamond专题(三)—— diamond架构
大家好,这次为大家带来的是diamond的架构,架构如下图所示: 对该图进行一些说明: 1.作为一个配置中心,diamond的功能分为发布和订阅两部分.因为diamond存放的是持久数据,这些数据的变 ...
- 使用Flashbuilder/Flashbuilder-plugins搭建Flex工程每日构建(自动化构建)的方法
前段时间研究flex工程自动编译的时候,遇到了阻碍,就放下了,直到今天每日构建的问题又一次给项目组带来了麻烦,于是我彻底愤怒了. 最后,我的怒火没有白费,写出来以发泄情绪. [基本原理]: adobe ...
- 【转】Getting xrdp to work on CentOS 6.4
vi /etc/selinux/config SELINUX=disabled reboot Step 1: #rpm -Uvh http://pkgs.repoforge.org/rpmforge- ...
- oracle 创建索引思考(转)
在Oracle数据库中,创建索引虽然比较简单.但是要合理的创建索引则比较困难了. 笔者认为,在创建索引时要做到三个适当,即在适当的表上.适当的列上创建适当数量的索引.虽然这可以通过一句话来概括优化的索 ...
- OpenStack swift安装
由于实验室项目需要云存储系统,因此在实验室服务器上搭建一个基于OpenStack swift的云存储系统. 最开始按照官方网站上介绍的方法,使用SAIO方式安装http://docs.openstac ...
- Sublime Text 2 使用心得
一. 前言 作为一个前端,有一款好的开发利器是必不可少的,editplus.notepad++都是不错的工具,体积轻巧,启动迅速(dw太浮肿了).最近,又有一款新的编辑器诞生,席卷前端界,惹得无数喜爱 ...
- 如何把jquery 的dialog和ztree结合
第一步:先准备好juqury-ui.ztree 的js文件和css 文件 第二步:example.jsp文件代码中写 ..引入jqueryui.ztree 的js和css文件 <body> ...
- 第四届CCF软件能力认证(CSP2015) 第五题(最小花费)题解
[问题描述] C国共有$n$个城市.有$n-1$条双向道路,每条道路连接两个城市,任意两个城市之间能互相到达.小R来到C国旅行,他共规划了$m$条旅行的路线, 第$i$条旅行路线的起点是$s_i$,终 ...
- Lucene教程具体解释
(建立索引)] )中生成的索引文件的存放地址.详细步骤简单介绍例如以下: 1.创建Directory对象,索引目录 2.创建IndexSearch对象,建立查询(參数是Directory对象) 3.创 ...
- Ubuntu Server 12.04 静态IP简洁配置
PS:很长时间没使用Ubuntu了,刚才安装个Ubuntu Server 12.04做测试.Ubuntu的网络设置跟Redhat系是不一样的,配置IP时发现跟以前的Ubuntu桌面版本也有所不同,记录 ...