Android TabLayout设置setupWithViewPager标题不显示

本文详细解析了在使用TabLayout结合ViewPager时,标题未能正确显示的问题及解决方案。通过调整PagerAdapter,确保getPageTitle方法返回正确的标题,从而实现TabLayout与ViewPager标题同步显示。
viewList = new ArrayList<>();
		for (int i = 0; i < 3; i++) {
			tb_inspection_facility_room.addTab(tb_inspection_facility_room.newTab().setText("tab"+i));
			View view = inflater.from(this).inflate(R.layout.inspection_viewpager_facility_page,null);
			TextView textView = view.findViewById(R.id.textview);
			textView.setText("Page"+i);
		}
		pagerAdapter = new InspectionRoomPagerAdapter(viewList);
		vp_inspection_facility_room.setAdapter(pagerAdapter);
		tb_inspection_facility_room.setupWithViewPager(vp_inspection_facility_room);
复制代码

在设置setupWithViewPager后标题没有如愿的显示出来,其实是Tablayout调用viewpager的getTItle方法的时候导致没有数据展示出来,源码:

addTab(newTab().setText(mPagerAdapter.getPageTitle(i)), false);
复制代码

解决方法就是在pagerAdapter里的

@Nullable
	@Override
	public CharSequence getPageTitle(int position) {
		return titleList.get(position);
	}
复制代码

返回你想要的标题就行了

解决后:

viewList = new ArrayList<>();
		List<String> titleList = new ArrayList<>();
		for (int i = 0; i < 3; i++) {
			titleList.add("title"+i);
			tb_inspection_facility_room.addTab(tb_inspection_facility_room.newTab().setText("tab"+i));
			View view = inflater.from(this).inflate(R.layout.inspection_viewpager_facility_page,null);
			TextView textView = view.findViewById(R.id.textview);
			textView.setText("Page"+i);
			viewList.add(view);
		}
		pagerAdapter = new InspectionRoomPagerAdapter(viewList,titleList);
		vp_inspection_facility_room.setAdapter(pagerAdapter);
		tb_inspection_facility_room.setupWithViewPager(vp_inspection_facility_room);
复制代码

转载于:https://juejin.im/post/5be17fe8e51d45544c1b2f0e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值