0

タブにfontawesomeを実装したいと思います。これは重要な事項です。 OnCreateイベントでTabLayoutのタブでのFontAwesomeの実装

MainActivity:viewpagerためMainActivityである

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 
    } 

方法:

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; 
    } 
} 

?何か案は?

答えて

1

TabLayoutでフォントAwesomeを使用しましたが、少し厄介です。

1フォントアイコンをasset/fontフォルダに入れます。

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で、それらを使用する:あなたのフォントを適用するためのコード次

2 - 使用。

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

4-(3の代わりの)アダプタのあるgetTitleオーバーライド:Tablayoutはあなたがそのようなコードを使用する必要がsetTypeface方法を持っていないので

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

      } 
     } 

を。 PagerSlidingTabStripを使用すると、そのような方法があり、簡単にフォントを適用できます。

tabs.setTypeface(typeFace , 0); 
+0

助けてくれてありがとうございます:http://prntscr.com/cc7xijサイズを増やしてインジケータのように色を変える方法はありますか? – WinterChilly

+0

もちろん、それは可能ですが、あなたが何かを見つけることができなかった場合は、タブラウトまたはTabLayoutのセレクタで – Amir

+0

のフォントサイズを増やすことについて、そこに多くのスレッドがあります。 – Amir

関連する問題