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

相關問題