Android开源框架ViewPageIndicator实现Tab导航

摘要:
使用Android开源框架ViewPageIndicator实现Tab导航步骤1:添加依赖项有两种方法:1。在build.gradle:compile'com.inkapplications.viewpageindicator:library:2.4.3'2下的dependencies选项卡下直接添加以下内容。在文件-˃项目结构-˃应用-˃依赖项-˃+-˃L中

使用Android开源框架ViewPageIndicator实现Tab导航

第一步:需要添加依赖

有两种方式:

1 直接在build.gradle下的dependencies标签下添加如下:

compile 'com.inkapplications.viewpageindicator:library:2.4.3'

2 在File->Project Structure->app->Dependencies->+–>LibraryDependency下面直接搜索这个库,然后添加确认就可以如下:

Android开源框架ViewPageIndicator实现Tab导航第1张

第二种方式比较简单,其他库添加也可以同样方式添加。

第二步:布局文件,主要是一个TabPageIndicator和一个ViewPager两个标签,代码如下:

<com.viewpagerindicator.TabPageIndicator
android:id="@+id/indicator"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_weight="1"
android:layout_height="0dp"
android:layout_width="fill_parent"/>


第三步:创建Activity继承自FragmentActivity,这里主要分成几个部分
1 创建ViewPager的Adapter,然后实例化TabPageIndicator后,与ViewPager关联,代码如下:
FragmentPagerAdapter adapter
= new TabPageIndicatorAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);
indicator.setViewPager(pager);
(这里面的pager和indicator都是用了BufferKnife框架注解的)

2设置indicator的监听,代码如下;
indicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}
@Override
public void onPageSelected(int position) {
Toast.makeText(getApplicationContext(),TITLE[position],Toast.LENGTH_SHORT).show();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});

3构造VIewPager的适配器TabPageIndicatorAdapter,代码如下:
class TabPageIndicatorAdapter extends FragmentPagerAdapter{
public TabPageIndicatorAdapter(FragmentManager fm){
super(fm);
}

@Override
public Fragment getItem(int position){
Fragment fragment = new ItemFragment();
Bundle args = new Bundle();
args.putString("arg",TITLE[position]);
fragment.setArguments(args);
return fragment;
}
@Override
public CharSequence getPageTitle(int position){
return TITLE[position % TITLE.length];
}
@Override
public int getCount(){
return TITLE.length;
}
}

第四步:构造继承自Fragment的ItemFragment,代码如下;

public class ItemFragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){

View contentView = inflater.inflate(R.layout.fragment_item,container,false);
TextView mTextView = (TextView)contentView.findViewById(R.id.textview);

Bundle mBundle = getArguments();
String title = mBundle.getString("arg");

mTextView.setText(title);
return contentView;
}

@Override
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
}
}

第五步,就是构造ItemFragment布局文件,这个就比较简单了,代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="18sp"
android:gravity="center" />
</LinearLayout>
好了,以上五步做完,利用ViewPageIndicator实现Tab导航就完成了。

免责声明:文章转载自《Android开源框架ViewPageIndicator实现Tab导航》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JSP 日期处理ext4文件系统制作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

换Ubuntu邮件客户端Evolution为Thunderbird

ubuntu 10.04右上角的这个消息通知的小控件还是蛮喜欢的,不过到今天才知道它叫indicator applet。这里自带的邮件客户端是Evolution,配置好以后,收取邮件的过程相当的慢,而且还总失去响应,实在是难用。 换成thunderbird的原因如下: 用久了,已经习惯了。 设置简单,对Gmail设置的时候可以自动配置。 响应比Evolut...

android开发(7) 文件下载

我们在开发中经常需要从服务器下载文件,下载的内容可能有交换的信息,缓存的图片,程序更新包等。我们使用URLConnection来实现下载。先看几行代码: String urlDownload = "";urlDownload = "http://www.baidu.com/img/baidu_sylogo1.gif"; URL url = new URL...

五大好用的开源MySQL管理工具推荐

众所周知,对于数据库管理工作者(DBA)来说,保持数据正常运行在最佳状态需要具备敏捷、专注、冷静和快速的反应能力。因为数据库几乎是所有应用程序成功运行的核心,由于DBA负责组织数据,因此寻找可靠的工具帮助简化数据库管理流程并简化日常维护任务是必要的。下面是小编整理的五个好用的开源MySQL管理工具,可以改善MySQL环境中的CLI和Web管理,SQL查询,...

相比同为开源框架的uniapp和flutter未来生态前景大对比

相比同为开源框架的uniapp和flutter未来生态前景谁更好? 目前来说uniapp和flutter算是非常强大和平衡的两款混合开发APP框架 首先表明一下观念,更加看好dcloud的uniapp!我知道接下来会有人开始喷了,我们来慢慢细说一下,首先flutter的确是谷歌的亲生儿子,   flutter的未来 优势: 1,高性能 最贴近原生APP的就...

Android Tv 中的按键事件 KeyEvent 分发处理流程

本篇文章已授权微信公众号 安卓巴士Android开发者门户 独家发布 这次打算来梳理一下 Android Tv 中的按键点击事件 KeyEvent 的分发处理流程。一谈到点击事件机制,网上资料已经非常齐全了,像什么分发、拦截、处理三大流程啊;或者 dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent 啊...

go 优化技巧

go语言最全优化技巧总结,值得收藏! https://mp.weixin.qq.com/s/_VGaV8ef65h9goxxfWejtQ 赵柯 云加社区 2021-08-23   导语 | 本文总结了在维护go基础库过程中,用到或者见到的一些性能优化技巧,现将一些理解梳理撰写成文,和大家探讨。     一、常规手段   (一)sync.Pool  ...