[英]How to embed font in tab layout from design support android
I want to embed custom font in tablayout from design support library. 我想在设计支持库的tablayout中嵌入自定义字体。 I try to set custom view which is set typeface already. 我尝试设置已设置字体的自定义视图。 But it is not working. 但它没有用。 Just appear system font. 只是出现系统字体。
What I did is, 我做的是,
mAdpater = new CustomPagerAdapter(getSupportFragmentManager());
mFragmentPager.setAdapter(mAdpater);
mTabs.setupWithViewPager(mFragmentPager);
Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/myFont.ttf");
for (int i = 0; i < mTabs.getTabCount(); i++) {
TextView tv = new TextView(this);
tv.setText(mAdpater.getPageTitle(i));
tv.setTypeface(tf);
mTabs.getTabAt(i).setCustomView(tv);
}
Welcome for any suggestion. 欢迎任何建议。
If you override getPageTitle
in your FragmentPagerAdapter
, then call 如果在FragmentPagerAdapter
覆盖getPageTitle
,则调用
mTabs.setupWithViewPager(mFragmentPager);
the tabs text is set for you. 标签文本是为您设置的。
Then to change the font I used this method from this SO post 然后从这个 SO帖子更改我使用此方法的字体
Typeface tf = Typeface.createFromAsset(getAssets(), "myfont.ttf");
ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0);
int tabsCount = vg.getChildCount();
for (int j = 0; j < tabsCount; j++) {
ViewGroup vgTab = (ViewGroup) vg.getChildAt(j);
int tabChildsCount = vgTab.getChildCount();
for (int i = 0; i < tabChildsCount; i++) {
View tabViewChild = vgTab.getChildAt(i);
if (tabViewChild instanceof TextView) {
((TextView) tabViewChild).setTypeface(tf);
}
}
}
Here is the FragmentPagerAdapter
in its entirety for reference 这里是FragmentPagerAdapter
的全部内容供参考
class PagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> fragmentList = new ArrayList<>();
private final List<String> fragmentTitleList = new ArrayList<>();
public PagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
public void addFragment(Fragment fragment, String title) {
fragmentList.add(fragment);
fragmentTitleList.add(title);
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return fragmentTitleList.get(position);
}
}
you just add code below 你只需在下面添加代码
int wantedTabIndex = 0;
TextView tv = (TextView)(((LinearLayout)
((LinearLayout)tabLayout_main.getChildAt(0)).getChildAt(wantedTabIndex)).getChildat(1));
tv.setText("your title");
tv.setTypeFace(customfont);
the wantedtabIndex in above code is your tab position 上面代码中的wantedtabIndex是您的标签位置
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.