0

我想在选项卡中实现fontawesome。这是重要的事情。FontAwesome实现TabLayout中的选项卡

MainActivity中的OnCreate:

private void setupViewPager(ViewPager viewPager) { 
    AdapterViewPager adapter = new AdapterViewPager(getSupportFragmentManager()); 
    //Kreiraš fragment, ki bo v ViewPagerju 
    adapter.addFragment(new Fragment1(), "HOME"); 
    adapter.addFragment(new Fragment2(), "HEART"); 
    adapter.addFragment(new Fragment3(), "CRITERIA"); 
    viewPager.setAdapter(adapter); 
    viewPager.setOffscreenPageLimit(2); 
} 

定制AdapterViewPager:

public class AdapterViewPager extends FragmentStatePagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 


    public AdapterViewPager(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 

    @Override 
    public int getItemPosition(Object object) { 
     return POSITION_NONE; 
    } 
} 

如何才能做到这一点

viewPager = (ViewPager) findViewById(R.id.pager); 
    setupViewPager(viewPager); //Kreiramo viewpager oz. klic funkcije 
    TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
    if (tabLayout != null) { 
     tabLayout.setupWithViewPager(viewPager); //Poveže tab_layout z viewpagerjem 
    } 

是在MainActivity为viewpager的方法?有任何想法吗?

回答

1

我在TabLayout中使用了字体Awesome,但它有点令人讨厌。

1-将字体图标放入您的asset/font文件夹中。

2-使用下面的代码以应用字体:

private void changeTabsFont() { 

     Typeface font = Typeface.createFromAsset(getAssets(),"fonts/font-awsome.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(font); 
       } 
      } 
     } 
    } 

3-现在只需复制您font-awesome代码在你的字符串资源,并利用它们在你的TabLayout

<string name="icon_home">&#xf015;</string> 

4-(3选一)重写你的适配器的getTitle:

@Override 
     public CharSequence getPageTitle(int position) { 
      switch (position) { 
       case POSITION_HOME: 
        return mContext.getResources().getString(R.string.icon_home); 
      // ... other title 

      } 
     } 

因为Tablayout没有必须使用这种代码setTypeface方法。如果你使用PagerSlidingTabStrip它有这样的方法,你可以很容易地应用你的字体。

tabs.setTypeface(typeFace , 0); 
+0

感谢您的帮助,但现在它看起来像这样:http://prntscr.com/cc7xij任何方式来增加它的大小和改变颜色,就像它是指标? – WinterChilly

+0

当然有可能,有很多关于增加tabLayout中的字体大小或TabLayout选择器 – Amir

+0

如果你没有找到任何东西让我来帮你:) – Amir

相关问题