1新建各fragement 添加到list
2新建适配器,在适配器的 @Override
public CharSequence getPageTitle(int position) {
return mName[position];
} 方法给每个tab设置名称,mName为传进来的tab名称数组;
3 该适配器继承FragmentPagerAdapter;
4 总有一些时候你会遇到很操蛋的需求,本文主要为记录该需求 自定义tab 的长度跟文字一样而不是整个tab一样
反射:
Class tablayout = mDynamicTabLayout.getClass();
Field tabStrip = null;
try {
tabStrip = tablayout.getDeclaredField("mTabStrip");
tabStrip.setAccessible(true);
LinearLayout ll_tab = (LinearLayout) tabStrip.get(mDynamicTabLayout);
for (int i = 0; i < ll_tab.getChildCount(); i++) {
View child = ll_tab.getChildAt(i);
child.setPadding(0, 0, 0, 0);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1);
// 以下两行是设置tab下滑条的宽度 起始位置和结束位置
params.setMarginStart(DensityUtils.dip2px(getApplicationContext(), 60));
params.setMarginEnd(DensityUtils.dip2px(getApplicationContext(), 45));
child.setLayoutParams(params);
child.invalidate(); // 这个方法是重画
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
网友评论