现在很多的应用页面都是由一个个的TAB组成的,我们可以用布局加事件监听实现tab ,只是这样的控制非常麻烦,而且有很多的开源项目可以实现这样的功能,我们今天就介绍一下ViewPagerIndicator,这个项目就是可以实现这种效果。
首先下载依赖项目
https://github.com/JakeWharton/Android-ViewPagerIndicator
这个页面上有集成到自己项目的方式,大致就是:
1、将该项目设为自己项目的依赖项目。
2、在相应窗口的布局文件中引入TabPageIndicator,在Android-ViewPagerIndicator项目中有很多的tab的样式,它们对应不同的类。
一般我们都是将Android-ViewPagerIndicator与viewpager组合使用,当我们切换tab的时候下面的viewpager也一起切换。
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- >
- <com.viewpagerindicator.TabPageIndicator
- android:id="@+id/indicator"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"/>
- <android.support.v4.view.ViewPager
- android:id="@+id/pager"
- android:layout_width="fill_parent"
- android:layout_height="0dp"
- android:layout_weight="1"/>
- </LinearLayout>
3、然后在窗口Activity或者Fragment内,我们获取该TabPageIndicator和ViewPager,并将它们关联起来。
- pager=(ViewPager)findViewById(R.id.pager);
- indicator=(TabPageIndicator)findViewById(R.id.indicator);
- indicator.setViewPager(pager);//关联
4、改变tab的样式,我们这边只看TabPageIndicator的样式修改,其他基本类似。我们进入TabPageIndicator的源码在构造函数。
- publicTabPageIndicator(Contextcontext,AttributeSetattrs){
- super(context,attrs);
- setHorizontalScrollBarEnabled(false);
- mTabLayout=newIcsLinearLayout(context,R.attr.vpiTabPageIndicatorStyle);
- addView(mTabLayout,newViewGroup.LayoutParams(WRAP_CONTENT,MATCH_PARENT));
- }
我们可以看出TabPageIndicator使用的是vpiTabPageIndicatorStyle样式。我们可以在依赖项目中看到系统自带的样式,在依赖项目的values/vpi_styles.xml文件中,这里面定义了所有tab类型的样式。
- <stylename="Widget.TabPageIndicator"parent="Widget">
- <itemname="android:gravity">center</item>
- <itemname="android:background">@drawable/vpi__tab_indicator</item>
- <itemname="android:paddingLeft">22dip</item>
- <itemname="android:paddingRight">22dip</item>
- <itemname="android:paddingTop">12dp</item>
- <itemname="android:paddingBottom">12dp</item>
- <itemname="android:textAppearance">@style/TextAppearance.TabPageIndicator</item>
- <itemname="android:textSize">12sp</item>
- <itemname="android:maxLines">1</item>
- </style>
我们可以根据自己的需要继承这个样式并修改。
到这里基本就OK了。Android-ViewPagerIndicator的集成非常简单的。
Android-ViewPagerIndicator可以与ActionBarSherlock合成开发的。非常方便
最后附上我的Viewpager适配器的类
- privateclassMyViewPagerAdapterextendsFragmentPagerAdapter{
- privateList<SelectItem>mList=newArrayList<SelectItem>();
- publicvoidsetSelects(List<SelectItem>list){
- this.mList=list;
- }
- publicMyViewPagerAdapter(FragmentManagerfm){
- super(fm);
- }
- @Override
- publicFragmentgetItem(intposition){
- returnmList.get(position).fragment;
- }
- @Override
- publicCharSequencegetPageTitle(intposition){
- returnmList.get(position).desc;
- }
- @Override
- publicintgetCount(){
- returnmList.size();
- }
- }
相关推荐
Android-ViewPagerIndicator-master, 很多个viewpager实例
Android-ViewPagerIndicator 一款仿MIUI的ViewPagerIndicator,支持Tab数量随意定义。 效果图 固定tab数量 非固定tab数量 用法 代码生成tab mIndicator.setVisibleTabCount(4);//设置可见Tab数量 mIndicator....
Android-ViewPagerIndicator 开源项目 可以使用出现图片滑动导航
Android-ViewPagerIndicator ViewPager指针项目,在使用ViewPager的时候能够指示ViewPager所在的位置,就像Google Play中切换的效果一样,还能使用在应用初始化的介绍页面。 兼容Android支持库的ViewPager及...
View Pager Indicator titles swype and other too many
ViewPagerIndicator项目可以用于实现工作区的UI设计
AndroidViewPage示例-ViewPagerIndicator Java
为android PagerView 添加指示器。
ViewPagerIndicator 1. 支持自定义tab样式 2. 支持自定义滑动块样式和位置 3. 支持自定义切换tab的过渡效果 4. 支持子界面的预加载和界面缓存 5. 支持设置界面是否可滑动 6. android:minSdkVersion="14" 7.导入方式 ...
android-support-v4-v7-v13-v14-v17(官方最新完整版),官方最新版的,压缩包内包含android-support-v4、android-support-v7-appcompat,android-support-v7-cardview,android-support-v7-gridlayout,android-support-...
android-sdk\platforms\android-21
ViewPagerIndicator eclipse 用户下载的版本,可以直接用。
1、来自Android-ViewPagerIndicator-master(https://github.com/JakeWharton/Android-ViewPagerIndicator); 2、作为布局同样方便、好用、美观
android 4.1 最新SDK Windows版: http://s1.eoeandroid.com/sdk/4.1/android-sdk_r20-windows.zip(推荐) http://s1.eoeandroid.com/sdk/4.1/installer_r20-windows.exe Mac版: ...
将android-17.zip解压到 Android\android-sdk\platforms 文件夹下。
这是自定义控件ViewPagerIndicator,更多详细内容请参见我的博客:http://blog.csdn.net/ProgramChangesWorld/article/details/47148639
Xray-android-arm64-v8a
android-sdk\platforms\android-20