动态修改TabLayout标题
来源:互联网 发布:淘宝开店卖什么好起步 编辑:程序博客网 时间:2024/05/16 11:36
在TabLayout+ViewPager中我们可能会碰到这样的需求就是在我们的Tab页下的Fragment中完成数据的加载时要在我们的Tab标题中动态显示有多少数量,下面就是实现过程。
adapter中
public class MPagerAdapter extends FragmentPagerAdapter { private List<Fragment> mFragmentList; private List<String> mTitles; public MPagerAdapter(FragmentManager fm, List<String> titles, List<Fragment> fragList) { super(fm); mFragmentList = fragList; mTitles = titles; } @Override public Fragment getItem(int arg0) { return mFragmentList.size() != 0 ? mFragmentList.get(arg0) : null; } @Override public int getCount() { return mFragmentList == null ? 0 : mFragmentList.size(); } @Override public CharSequence getPageTitle(int position) { return mTitles.size() != 0 ? mTitles.get(position) : ""; } // 动态设置我们标题的方法 public void setPageTitle(int position, String title) { if(position >= 0 && position < mTitles.size()) { mTitles.set(position, title); notifyDataSetChanged(); } }}
activity中
// 上面的三个Tab就表示我们三个Fragment// 命名在这里就随便一点,实际开发中应按照你们自己的功能来命名// 创建Adapter所需要的数据OneFrgment oneFragment = new OneFrgment();TwoFragment twoFragment = new TwoFragment(); ThreeFragment threeFragment = new ThreeFragment();List<Fragment> listFragmentData = new ArrayList<>();listFragmentData.add(oneFragment );listFragmentData.add(twoFragment );listFragmentData.add(threeFragment );List<String> titles = new ArrayList<>();titles.add(TAB1);titles.add(TAB2);titles.add(TAB3);Adapter adapter = new Adapter(getSupportFragmentManager(), titles, listFragmentData);// 我们需要把我们这个AdapterF传入到ragment中,我们就需要在我们的Fragment中写个方法,如果你们个Fragment中都需要的话,都要写相应的set方法,在这里我只写一个oneFragment.setPageAdapter(adapter);
fragment中
// onCreat方法shenglue,此处的Adapter就是我们ViewPager的Adapter,通过该Adapter去修改TabLayout标题private Adapter mAdapter;public void setPageAdapter(Adapter adapter){this.mAdapter = adapter;}//更新ViewPager的Title信息if(mAdapter != null){ for (int i=0; i<mAdapter.getCount(); i++){ if(_PageAdapter.getItem(i) == OneFragment.this){ String title =mAdapter.getPageTitle(i).toString(); // 在TabLayout的标题上添加() int posBracket = title.indexOf("("); if(posBracket > 0) title = title.substring(0, posBracket); mAdapter.setPageTitle(i, String.format(Locale.CHINESE, "%s(%s)", title, 显示的数量)); } }}
至此,我们就完成了对TabLayout的标题进行动态修改的操作了,如果错误欢迎指出。
阅读全文
0 0
- 动态修改TabLayout标题
- Android TabLayout修改标题
- Android Tablayout + viewpager 切换时修改tablayout title(标题)的字体颜色和字体大小
- 动态修改GridView Head标题
- MFC 动态修改对话框标题
- mfc groupbox 标题动态修改
- js动态修改页面标题
- TabLayout标题按钮
- c#2.0中动态修改页面标题
- c#2.0中动态修改页面标题
- 动态修改标题、描述、关键字等属性
- 如何动态修改GroupBox的标题
- 动态修改DBGrid标题和字段
- MFC 动态修改对话框的标题
- 动态修改窗口标题和类名
- 微信小程序动态修改页面标题setNavigationBarTitle
- android TabHost 动态修改图标或者动态改变标题
- tabHost动态改标题文字,动态修改图片
- Android踩坑日记:RecyclerView中EditText和ImageView的ViewHolder复用坑
- Qt改错本
- <<每天最重要的2小时>>感谢
- [CQOI2015]&[bzoj3933]多项式 二项式定理+高精度
- spring data jpa
- 动态修改TabLayout标题
- 31. Next Permutation
- cookie 和 session
- 第三周项目1(1) 建立线性表
- HDU
- bootstrap-table 分页
- MiKTeX+TeXstudio 快速搭建latex环境(备忘)
- 数据库操作增删改查详解
- struts.xml各标签默认值