你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
友情提醒:源码购买后不支持退换货
* Created by pei * Date: 2018/9/20 */ public class TabFragmentAdapter extends FragmentPagerAdapter { private String[] mTitles; private Context mContext; private List mFragments; public TabFragmentAdapter(List fragments,String[] titles, FragmentManager fm, Context context) { super(fm); this.mContext = context; this.mFragments = fragments; this.mTitles = titles; } @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mTitles.length; } @Override public CharSequence getPageTitle(int position) { return mTitles[position]; } } ``` 其中 getPageTitle(int position) 返回的是每个页面的导航标题。 #####3.3 ViewPager中需要加载的Fragment ViewPager滑动时会切换不同的Fragemnt,现在为了简洁展示起见,就让加载同一个Fragment,然后展示不同的导航标题 下面给出MyFragment的代码: ``` public class MyFragment extends AppFragment { @BindView(R.id.tv_name) TextView mTvName; private String mName; @Override public void onCreate(@Nullable Bundle bundle) { super.onCreate(bundle); if(getArguments()!=null){ mName = getArguments().getString("text"); } } @Override public int getContentViewId() { return R.layout.fragment_my; } @Override public void initData() { mTvName.setText(mName); } @Override public void setListener() { } @Override protected void onVisible(boolean isFirstTimeLoad) { } @Override protected void onInvisible() { } } ``` 其中 mName = getArguments().getString("text"); 用于接收并在fragment中展示导航标题 #####3.4 TabLayout在mainActivity的使用 在mainActivity中需要先声明一个导航栏数组: ``` private String mTitles[] = { "上海", "头条推荐", "生活", "娱乐八卦", "体育", "段子", "美食", "电影", "科技", "搞笑", "社会", "财经", "时尚", "汽车", "军事", "小说", "育儿", "职场", "萌宠", "游戏", "健康", "动漫", "互联网"}; ``` 然后加载导航对应的fragment: ``` private List mFragments; mFragments = new ArrayList<>(); for (int i = 0; i < mTitles.length; i++) { Fragment fragment = new MyFragment(); Bundle bundle = new Bundle(); bundle.putString("text", mTitles[i]); fragment.setArguments(bundle); mFragments.add(fragment); } ``` 再次是加载fragment对应的adapter: ``` mTabFragmentAdapter = new TabFragmentAdapter(mFragments, mTitles, getSupportFragmentManager(), mContext); // mViewPager.setOffscreenPageLimit(mFragments.size());// 设置预加载Fragment个数 mViewPager.setOffscreenPageLimit(6);// 设置预加载Fragment个数 mViewPager.setAdapter(mTabFragmentAdapter); mViewPager.setCurrentItem(0);// 设置当前显示标签页为第一页 ``` 最后再TabLayout绑定到ViewPager上,并设置TabLayout滑动选中和未选中时导航的文字颜色,在默认情况下,导航条是与导航文字宽度一致的,为了保持美观,一般要设置导航条与两边的间隙,这时别忘了调用方法 ``` public void reflex(final TabLayout tabLayout) ``` 具体的demo中都有详细介绍,这里就不做大篇幅讲解了。 ####四.项目结构图和效果图 > 项目结构图如下 ![](/contentImages/image/20181127/Vi8vQK4CVoMuj62AV4v.png) > 运行效果图如下: ![](/contentImages/image/20181127/iXOCJ8PVoCndikHtb7C.gif)
服务描述:微信加我验证时说明是:来自demo大师求助 服务范围:辅助将你有疑问的一个例子运行起来,并对该例子做技术方便的解答,服务时间为2天内,若需要其他特别需求或对从我这里下载的其他例子做解答价格另议
服务价格:¥50
我要联系