7.ViewPagerIndicator

 ViewPager指针项目,在使用ViewPager的时候能够指示ViewPager所在的位置,就像Google Play中切换的效果一样,还能使用在应用初始化的介绍页面 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. 自定义样式修改

运行程序会发现界面是黑的,因为这个主题就是黑的,所以在main_activity.xml文件中修改成白色

<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>

1.加上主题,ViewPagerIndicator就是这个主题,这个主题也是ViewPagerIndicator里边的,因为关联了,所以能用

 <activity            android:name=".MainActivity"            android:theme="@style/Theme.PageIndicatorDefaults" />

2.修改主题,运行程序会发现几个页面不是自己想要的

    <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 implements		OnPageChangeListener {	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;	}	@Override	public 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而不是viewpager		mIndicator.setOnPageChangeListener(this);		return view;	}	@Override	public 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的页签显示		 */		@Override		public CharSequence getPageTitle(int position) {			return mNewsTabData.get(position).title;		}		@Override		public int getCount() {			return mPagerList.size();		}		@Override		public boolean isViewFromObject(View arg0, Object arg1) {			return arg0 == arg1;		}		@Override		public Object instantiateItem(ViewGroup container, int position) {			TabDetailPager pager = mPagerList.get(position);			container.addView(pager.mRootView);			pager.initData();			return pager.mRootView;		}		@Override		public void destroyItem(ViewGroup container, int position, Object object) {			container.removeView((View) object);		}	}	@Override	public void onPageScrollStateChanged(int arg0) {	}	@Override	public void onPageScrolled(int arg0, float arg1, int arg2) {	}	@Override	public 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);		}	}}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏潇涧技术专栏

Android Text View with Custom Font

本文以自定义TextView为例简单实践下如何自定义View,它能够根据设置的xml属性采用不同的字体显示文字

751
来自专栏7号代码

自定义View实现设置中心的功能视图

实现电话短信拦截是否开启就需要以上几十行代码,如果在下面还需实现版本更新是否开启,我们可能会复制以上几十行代码,修改其中的文本即可,但是如果还有同样的10个功能...

1724
来自专栏Android干货

安卓开发_startActivityForResult的详细用法

3316
来自专栏Android干货园

【Android源码解析】选择多张图片上传多图预览

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/47...

3432
来自专栏小鄧子的技术博客专栏

【译】Activity分割动画如何使用我的动画##

在切换不同Activity时,系统级过渡动画是作用于整个Activity的,而我想要实现的动画效果是将Activity A分割成两部分,然后将他们向外推开,最后...

1122
来自专栏Android干货

安卓开发_浅谈ContextMenu(上下文菜单)

3176
来自专栏刘望舒

打造一个灵活易用的Banner组件

之前做项目时候出于各种考虑,自己开发了Banner组件FBanner,欢迎大家的Star和PR。github上成熟的轮播图库已经有非常多了,比如banner和A...

1295
来自专栏程序员的诗和远方

看代码学AndroidUI - Tab

最近慢慢学习一点安卓,先看了些基础的,还处于很初级的阶段,平常都是面对弱类型的语言,python,js,现在看java突然有点不适应。 这里推荐郭神的《第一行代...

3249
来自专栏腾讯Bugly的专栏

Android ImageView 正确使用姿势

导语 本文主要介绍了ImageView的相关重要方法,从源码角度剖析了一些容易令人混淆或百思不得其解的问题。 一、正确合理使用ImageView 的src 和b...

3948
来自专栏郭霖

Android照片墙加强版,使用ViewPager实现画廊效果

记得关于照片墙的文章我已经写过好几篇了,有最基本的照片墙,有瀑布流模式的照片墙,后来又在瀑布流的基础之上加入了查看大图和多点触控缩放的功能。总体来说,照片墙这个...

4007

扫码关注云+社区

领取腾讯云代金券