tablayout自定义长度 与上面的文字相同

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();

}

你可能感兴趣的:(tablayout自定义长度 与上面的文字相同)