フォントをtablayoutに追加したい。タブはJsonを使用して動的に埋められます。 タブのヘッダーにフォントを追加する方法を教えてください。Tablayoutフォントが変更されない
これはこれは、アダプタでtablayout
private void setupPager() {
viewPager.setAdapter(new CustomAdapter(getActivity().getSupportFragmentManager(),getContext()));
tabLayout.setupWithViewPager(viewPager);
Typeface tf = Typeface.createFromAsset(getActivity().getAssets(), "EdgeCaps.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);
}
}
}
}
です。ここでtabnamesは、jsonの解析によって埋められた文字列配列です。
private class CustomAdapter extends FragmentPagerAdapter {
public CustomAdapter(FragmentManager supportFragmentManager, Context applicationContext) {
super(supportFragmentManager);
}
@Override
public Fragment getItem(int position) {
Fragment fragment = new ItemsMenuFragment();
return fragment;
}
@Override
public int getCount() {
return tabNames.size();
}
@Override
public CharSequence getPageTitle(int position) {
return tabNames.get(position);
}
}
}
誰でもtablayout.Iのフォントを変更するために私を助けることができるがsetupPagerが、その動作していないで、これを使用しようとしました。 TabLayoutのXMLファイル内の
Typeface tf = Typeface.createFromAsset(getActivity().getAssets(), "EdgeCaps.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);
}
}
}
私はこの1つを試してみました..しかし、私はカスタムフォント「EdgeCaps.ttf」が適用されるようにしたいですTablayout.Howコードを介して行うには? –
これは動作しません。 TextAppearance.Design.Tabはボタンスタイルであり、プレマテリアルデザインボタンはスタイルを使用してカスタムフォントを持つことはできません。 –