2016-06-17 5 views
2

Я использую TabLayout и ViewPager для создания вкладок и их работы. По какой-то причине названия вкладок не отображаются.Как добавить заголовок?

Titles not showing Это странно, потому что каждая вкладка должна иметь текст на нем ...

Вот код:

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) { 

      } 
     }); 
    } 
} 

Это JAVA из MainActivity. Вот 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> 

Опять же, мои вкладки работают эффективно, но названия их не отображаются.

+0

Попробуйте изменить цвет фона TabLayout (цвет, отличный от? Attr/colorPrimary) ... просто чтобы проверить ... возможно, заголовок также использует основной цвет – W0rmH0le

ответ

2

Удалить свои два звонка addTab(). Вы используете setupWithViewPager(), что означает, что вкладки взяты из ViewPager, а названия взяты из getPageTitle() на PagerAdapter.

+0

Как реализовать 'getPageTitle()' в моем «PagerAdapter»? –

+0

@RuchirBaronia: переопределите его и верните заголовок для вкладки, учитывая позицию «ViewPager», которую вы предоставили в качестве параметра. См. [Этот образец проекта] (https://github.com/commonsguy/cw-omnibus/tree/master/DesignSupport/TabLayout) для приложения, которое использует 'TabLayout' и' ViewPager' таким образом. – CommonsWare

+0

Итак, если у меня есть две вкладки, первая вкладка имеет нулевое положение, а вторая вкладка - одна? Так что я могу просто иметь условное выражение и возвращать титул, основанный на этой позиции, не так ли? –

Смежные вопросы