XTabLayout改变字体
/**
* 监听tab及改变字体
*/
protected void setPageChangeListener(final XTabLayout tabs, ViewPager viewPager) {
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
String test = tabs.getTabAt(position).getText().toString();
applyFont(mContext,tabs, AppConstant.NEW_FONT_PATH,test, position);
}
@Override
public void onPageSelected(int position) {
String test = tabs.getTabAt(position).getText().toString();
applyFont(mContext,tabs,AppConstant.NEW_FONT_PATH,test, position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
/**
* 字体改变
* @param context
* @param root
* @param fontName
* @param positionName
* @param position
*/
protected void applyFont(final Context context, final View root, final String fontName, String positionName, int position) {
try {
if (root instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) root;
for (int i = 0; i < viewGroup.getChildCount(); i++)
applyFont(context, viewGroup.getChildAt(i), fontName,positionName, position);
} else if (root instanceof TextView) {
((TextView) root).setTypeface(Typeface.createFromAsset(context.getAssets(), fontName));
currentItemPossition = position;
}
} catch (Exception e) {
Log.e(TAG, String.format("Error occured apply %s font for %s view", fontName, root));
e.printStackTrace();
}
}
调用:
fragmentAdapter = new BaseFragmentAdapter(getChildFragmentManager(), mNewsFragmentList, channelNames);
viewPager.setAdapter(fragmentAdapter);
tabs.setupWithViewPager(viewPager);
viewPager.setCurrentItem(currentItemPossition);
this.setPageChangeListener(tabs, viewPager);