7.ViewPagerIndicator
1. 引入ViewPagerIndicator库
2. 编写布局文件
<com.viewpagerindicator.TabPageIndicator
android:id="@+id/indicator"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
3. mIndicator.setViewPager(mViewPager);//将viewpager和mIndicator关联起来,必须在viewpager设置完adapter后才能调用
4. 重写PagerAdapter方法,返回页面标题
/**
* 重写此方法,返回页面标题,用于viewpagerIndicator的页签显示
*/
@Override
public CharSequence getPageTitle(int position) {
return mNewsTabData.get(position).title;
}
5. 自定义样式修改
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/fl_content"android:background="#fff"android:layout_width="match_parent"android:layout_height="match_parent" ></FrameLayout>
<activityandroid:name=".MainActivity"android:theme="@style/Theme.PageIndicatorDefaults" />
<style name="Theme.PageIndicatorDefaults" parent="android:Theme"><item name="vpiIconPageIndicatorStyle">@style/Widget.IconPageIndicator</item><item name="vpiTabPageIndicatorStyle">@style/Widget.TabPageIndicator</item></style>
<style name="Widget.TabPageIndicator" parent="Widget"><item name="android:gravity">center</item><item name="android:background">@drawable/vpi__tab_indicator</item><item name="android:paddingLeft">22dip</item><item name="android:paddingRight">22dip</item><item name="android:paddingTop">12dp</item><item name="android:paddingBottom">12dp</item><item name="android:textAppearance">@style/TextAppearance.TabPageIndicator</item><item name="android:textSize">16sp</item><item name="android:textColor">@drawable/vpi__tab_text_color_indicator</item>//在下面加了横线<item name="android:maxLines">1</item></style>
<!-- Non focused states --><item android:state_focused="false" android:state_pressed="false" android:state_selected="false" android:color="#000"/><item android:state_focused="false" android:state_pressed="false" android:state_selected="true" android:color="#f00"/>
public class NewsMenuDetailPager extends BaseMenuDetailPager implementsOnPageChangeListener {private ViewPager mViewPager;private ArrayList<TabDetailPager> mPagerList;private ArrayList<NewsTabData> mNewsTabData;// 页签网络数据private TabPageIndicator mIndicator;public NewsMenuDetailPager(Activity activity,ArrayList<NewsTabData> children) {super(activity);mNewsTabData = children;}@Overridepublic View initViews() {View view = View.inflate(mActivity, R.layout.news_menu_detail, null);mViewPager = (ViewPager) view.findViewById(R.id.vp_menu_detail);ViewUtils.inject(this, view);mIndicator = (TabPageIndicator) view.findViewById(R.id.indicator);// mViewPager.setOnPageChangeListener(this);//注意:当viewpager和Indicator绑定时,// 滑动监听需要设置给Indicator而不是viewpagermIndicator.setOnPageChangeListener(this);return view;}@Overridepublic void initData() {mPagerList = new ArrayList<TabDetailPager>();// 初始化页签数据for (int i = 0; i < mNewsTabData.size(); i++) {TabDetailPager pager = new TabDetailPager(mActivity,mNewsTabData.get(i));mPagerList.add(pager);}mViewPager.setAdapter(new MenuDetailAdapter());mIndicator.setViewPager(mViewPager);// 将viewpager和mIndicator关联起来,必须在viewpager设置完adapter后才能调用}// 跳转下一个页面@OnClick(R.id.btn_next)public void nextPage(View view) {int currentItem = mViewPager.getCurrentItem();mViewPager.setCurrentItem(++currentItem);}class MenuDetailAdapter extends PagerAdapter {/*** 重写此方法,返回页面标题,用于viewpagerIndicator的页签显示*/@Overridepublic CharSequence getPageTitle(int position) {return mNewsTabData.get(position).title;}@Overridepublic int getCount() {return mPagerList.size();}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {TabDetailPager pager = mPagerList.get(position);container.addView(pager.mRootView);pager.initData();return pager.mRootView;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}}@Overridepublic void onPageScrollStateChanged(int arg0) {}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageSelected(int arg0) {System.out.println("onPageSelected:" + arg0);MainActivity mainUi = (MainActivity) mActivity;SlidingMenu slidingMenu = mainUi.getSlidingMenu();if (arg0 == 0) {//只有在第一个页面(北京), 侧边栏才允许出来slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);} else {slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);}}}
7.ViewPagerIndicator的更多相关文章
- Android之实现ViewPagerIndicator
PS:最近一直忙于学习任务,一直没有时间去写博客.今天周六,终于有时间了. 学习任务: 1.打造一个自己的ViewPagerIndicator 最近被安排了一大堆的学习任务,感觉老板还是很好的,让 ...
- 老猪带你玩转android自定义控件一——打造最简单viewpagerindicator
viewpagerindicator,既使用viewpager翻页时候,标题的指示条随着改变的控件,是常用android控件之一,几乎所有的新闻类APP中都有使用.如下图所示: 今天,我们将从0到1实 ...
- Android stuido viewpagerindicator的使用
Top Level Build.gradle buildscript { repositories { maven { url "http://dl.bintray.com/populov/ ...
- android 项目学习随笔七(ViewPagerIndicator与ViewPager)
1.ViewPagerIndicator https://github.com/JakeWharton/ViewPagerIndicator package com.viewpagerindicato ...
- Android 使用Fragment,ViewPagerIndicator 制作csdn app主要框架
转载 转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/23513993 本来准备下载个CSDN的客户端放手机上,没事可以浏览浏览资 ...
- android123 zhihuibeijing 新闻中心-新闻 页签 ViewPagerIndicator实现
## ViewPagerIndicator ## 使用导入ViewPagerIndicator库的方式相当于可以改源码,打包编译Eclips可以自动完成. ViewPager指针项目,在使用ViewP ...
- 开源控件ViewPagerIndicator学习
导航条指示器.ViewPagerIndicator 地址 https://github.com/JakeWharton/ViewPagerIndicator Style是重用控件的一种技术.类似CSS ...
- ViewPagerindicator 源码解析
ViewPagerindicator 源码解析 1. 功能介绍 1.1 ViewPagerIndicator ViewPagerIndicator用于各种基于AndroidSupportL ...
- Android 教你打造炫酷的ViewPagerIndicator 不仅仅是高仿MIUI
1.概述 哈,今天给大家带来一个ViewPagerIndicator的制作,相信大家在做tabIndicator的时候,大多数人都用过 TabPageIndicator,并且很多知名APP都使用过这个 ...
- 开源框架ViewPagerIndicator的使用——TabPageIndicator
1.导入Android-ViewPagerIndicator库文件 下载地址:https://github.com/JakeWharton/ViewPagerIndicator 2.布局文件 ...
随机推荐
- JavaScript:BOM&DOM
BOM(Browser Object Model): feature: 1.BOM has no relevant standards. 2.The fundamental object of BOM ...
- html2canvas
最近公司有个需求,实现html 页面元素转为png图像,这边用了html2canvas来实现.,这里记录一下,避免以后忘了~~ 官网链接: http://html2canvas.hertzen.com ...
- python学习笔记(六)- 函数、文件json与python字典互操作
1.函数:(方法.功能) 1.提高代码的复用性 2.让代码更简洁.简化代码 1)定义一个简单的函数 def sayHello(): #函数名,定义函数 print("hello") ...
- EOS.IO Technical White Paper v2
[EOS.IO Technical White Paper v2] Abstract: The EOS.IO software introduces a new blockchain architec ...
- mongodb-MYSQL
#encoding:utf8 import pymongoimport MySQLdbimport randomdef GetMongoData(): MyQuery = Mongo_Tab.find ...
- NodeJs学习相关网址
node官方中文 https://nodejs.org/zh-cn/ Node.js 中文网 https://nodejs.org/zh-cn/ Node.js 教程 | 菜鸟教程 http: ...
- jstl标准标签库 其他标签
url操作标签 import 将另一个页面的内容引入到这个页面上来, 与include指令的区别: 这个标签可以引入其他项目中甚至网络上的资源 <c:import url="被导入的路 ...
- m3u8文件什么合成便于播放的MP4的方法
先大家要知道M3U8文件不是一个视频文件,里面全是一些路径,说白了就是一个目录而已,所以要看视频,要找到对应存放视频的文件夹.如果不知道怎么找,可以使用文本格式打开M3U8文件,里面会有路径提示. ...
- 213. House Robber II 首尾相同的偷窃问题
[抄题]: You are a professional robber planning to rob houses along a street. Each house has a certain ...
- RFC
一.简介 二.常用 1)TLSv1.2 Protocol https://tools.ietf.org/html/rfc5246