2016-06-17 20 views
2

Ich benutze TabLayout und ViewPager, um Registerkarten zu erstellen, und es funktioniert zu haben. Aus irgendeinem Grund werden die Titel der Registerkarten nicht angezeigt.Wie man Titel hinzufügt?

Titles not showing Das ist seltsam, weil jeder Registerkarte Text darauf haben sollte ...

Hier ist der Code:

public class MainActivity extends AppCompatActivity { 

    MyPageAdapter pageAdapter; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
     tabLayout.setBackgroundColor(Color.rgb(45, 237, 192)); 
     tabLayout.addTab(tabLayout.newTab().setText("TITLE ONE")); 
     tabLayout.addTab(tabLayout.newTab().setText("TITLE TWO")); 
     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 


     List<Fragment> fragments = new ArrayList<Fragment>(); 
     fragments.add(Enable.newInstance()); 
     fragments.add(selector.newInstance()); 

     pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments); 
     final ViewPager pager = 
       (ViewPager) findViewById(R.id.viewpager); 
     pager.setAdapter(pageAdapter); 

     tabLayout.setupWithViewPager(pager); 

     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       pager.setCurrentItem(tab.getPosition()); 
      } 

      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 

      } 

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 

      } 
     }); 
    } 
} 

, dass die Java von MainActivity ist. Hier ist der XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.curlybrace.ruchir.tabs.MainActivity" 
    android:windowSoftInputMode="stateVisible|adjustPan|adjustResize"> 

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


    <android.support.design.widget.TabLayout 
     android:id="@+id/tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?attr/colorPrimary" 
     android:minHeight="?attr/actionBarSize" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 


</RelativeLayout> 

Wieder meine Tabs arbeiten effektiv, aber die Titel von ihnen werden nicht angezeigt.

+0

Versuchen Sie die Hintergrundfarbe von TabLayout zu ändern (zu einer anderen Farbe als? Attr/colorPrimary) ... nur um zu testen ... vielleicht verwendet der Titel auch die Primärfarbe – W0rmH0le

Antwort

2

Entfernen Sie Ihre zwei addTab() Anrufe. Sie verwenden setupWithViewPager(), was bedeutet, dass die Tabs aus dem ViewPager kommen und die Titel von getPageTitle() auf Ihrem PagerAdapter kommen.

+0

Wie implementiere ich 'getPageTitle()' in meinem 'PagerAdapter'? –

+0

@RuchirBaronia: Überschreiben Sie es und geben Sie den Titel für die Registerkarte zurück, wenn Sie die Position "ViewPager" angeben, die Sie als Parameter angeben. Siehe [dieses Beispielprojekt] (https://github.com/commonsguy/cw-omnibus/tree/master/DesignSupport/TabLayout) für eine App, die 'TabLayout' und' ViewPager' auf diese Weise verwendet. – CommonsWare

+0

Also, wenn ich zwei Registerkarten habe, hat die erste Registerkarte eine Position von Null, und die zweite Registerkarte hat eine Position von eins? Also kann ich einfach eine bedingte Bedingung haben und einen Titel basierend auf dieser Position zurückgeben, richtig? –

Verwandte Themen