2016-08-19 13 views
-1

非常に単純な例です。私はほとんどの人がこのようにタブを実装すると思います。しかし、タブのテキストは欠落しています。ビューページでタブテキストが消えた

デザインサポートlibのバージョンは、最新の24.2.0です。私は、ビューオブジェクトをバインドするButterKnife 8.2.1を使用してい

<android.support.design.widget.TabLayout 
    android:id="@+id/tabs" 
    app:tabTextColor="@android:color/darker_gray" 
    app:tabSelectedTextColor="@android:color/white" 
    android:background="@color/colorPrimary" 
    android:minHeight="?attr/actionBarSize" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.design.widget.TabItem 
     android:text="@string/tab_domain" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <android.support.design.widget.TabItem 
     android:text="@string/tab_upload" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <android.support.design.widget.TabItem 
     android:text="@string/tab_download" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

</android.support.design.widget.TabLayout> 

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

は、ここに私のレイアウトコードです。ここ

final DiagnosePagerAdapter adapter = new DiagnosePagerAdapter(getSupportFragmentManager(), 
      tabs.getTabCount()); 
    tabs.setupWithViewPager(pager); 
    pager.setAdapter(adapter); 
    pager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabs)); 

そして、私のアダプターされています:その質問でUsing TabLayout inside a Fragment; tab text invisible

回答は言った:私はここに同様の質問を見てきました

class DiagnosePagerAdapter extends FragmentStatePagerAdapter { 
    int mNumOfTabs; 
    List<Fragment> fragments = new ArrayList<>(); 

    public DiagnosePagerAdapter(FragmentManager fm, int numberOfTabs) { 
     super(fm); 
     this.mNumOfTabs = numberOfTabs; 
     fragments.add(new DomainFragment()); 
     fragments.add(new UploadFragment()); 
     fragments.add(new DownloadFragment()); 
    } 

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

    @Override 
    public int getCount() { 
     return mNumOfTabs; 
    } 
} 

そして、ここに私の活動のonCreate(のコード)がありますこれは23.0.0で修正されており、Xiaomi HM 2AやHuaweiデバイスを含む私の携帯電話では回避策はありません。

答えて

3

あなたは(私はこれがあなたの問題を解決すると思います)、以下のようgetPageTitle()をオーバーライドする必要があります。

@Override 
    public CharSequence getPageTitle(int position) { 
     switch (position) { 
      case 0: 
       return "Domain"; 
      case 1: 
       return "Upload"; 
      case 2: 
       return "Download"; 
     } 
     return null; 
    } 

をまた、あなたは、タブの数を固定しているとして、あなたはFragmentPagerAdapter代わりのFragmentStatePagerAdapterを使用する必要があります。

<android.support.design.widget.TabLayout 
    android:id="@+id/tabs" 
    app:tabTextColor="@android:color/darker_gray" 
    app:tabSelectedTextColor="@android:color/white" 
    android:background="@color/colorPrimary" 
    android:minHeight="?attr/actionBarSize" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 
は、以下のようにアダプタを変更し

class DiagnosePagerAdapter extends FragmentPagerAdapter { 

    public DiagnosePagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     Fragment fragment = null; 
     switch (position) { 
      case 0: 
       fragment = new DomainFragment(); 
       break; 
      case 1: 
       fragment = new UploadFragment(); 
       break; 
      case 2: 
       fragment = new DownloadFragment(); 
       break; 
     } 
     return fragment; 
    } 

    @Override 
    public int getCount() { 
     return 3; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     switch (position) { 
      case 0: 
       return "Domain"; 
      case 1: 
       return "Upload"; 
      case 2: 
       return "Download"; 
     } 
     return null; 
    } 

} 

をし、以下のようにあなたのonCreate()を変更します。そして、以下のようにしてXMLレイアウトを変更

final DiagnosePagerAdapter adapter = new DiagnosePagerAdapter(getSupportFragmentManager()); 
pager.setAdapter(adapter);//call setAdapter() before setupWithViewPager() 
tabs.setupWithViewPager(pager); 
+0

これは動作します!非常に感謝:) – Bleaker

+0

@ブレイカー:あなたの問題を解決したことを知ってよかった。回答の横の緑色のチェックマークをクリックして回答を受け入れてください。 –

関連する問題