/**
* 通过反射修改TabLayout Indicator的宽度(仅在Android 4.2及以上生效)
*/
private void setUpIndicatorWidth() {
Class<?> tabLayoutClass = tabLayout.getClass();
Field tabStrip = null;
try {
tabStrip = tabLayoutClass.getDeclaredField("mTabStrip");
tabStrip.setAccessible(true);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
LinearLayout layout = null;
try {
if (tabStrip != null) {
layout = (LinearLayout) tabStrip.get(tabLayout);
}
for (int i = 0; i < layout.getChildCount(); i++) {
View child = layout.getChildAt(i);
child.setPadding(0, 0, 0, 0);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
params.setMarginStart(dip2px(mContext, 18f));
params.setMarginEnd(dip2px(mContext, 18f));
}
child.setLayoutParams(params);
child.invalidate();
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
TabLayout中Indicator的样式修改
网友评论