2016-05-16 3 views
2

Работа с TabLayout Проблема в названиях не отображается i overide getPageTitle В адаптере также я вернул строку, которая будет названием, но эта строка не отображается. Я отлаживал приложение, я получаю заголовки с сервера.Титулы в tablayout не отображаются

И да, я последовал за this, но он тоже не работал.

Здесь приведены соответствующие java-код и xml-файлы.

private void loadCategories() { 
     StringRequest request = new StringRequest(Constants.URL_GET_CATEGORIES, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       categoriesDTO = Constants.gson.fromJson(response,CategoriesDTO.class); 
       ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
       viewPager.setAdapter(adapter); 
       setTabLayout(); 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 

      } 
     }); 

     ApplicationController.getmInstance().addToRequestQueue(request); 
    } 



    private void setTabLayout(){ 
     tabLayout.setupWithViewPager(viewPager); 
    } 

Адаптер для зрителя.

private class ViewPagerAdapter extends FragmentStatePagerAdapter{ 

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

    @Override 
    public Fragment getItem(int position) { 
     return new ContentFragment(); 
    } 

    @Override 
    public int getCount() { 
     return categoriesDTO.getCategories().size(); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     String title =categoriesDTO.getCategories().get(position).getTitle(); 
     return title; 
    } 
} 

Адрес xml.

<?xml version="1.0" encoding="utf-8"?> 

<android.support.design.widget.CoordinatorLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 


    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <include 
      android:id="@+id/toolbar" 
      layout="@layout/toolbar" 
      app:layout_scrollFlags="scroll|enterAlways" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tab" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabGravity="fill"> 

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

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewPager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior"> 

    </android.support.v4.view.ViewPager> 
</android.support.design.widget.CoordinatorLayout> 

<android.support.design.widget.NavigationView 
    android:id="@+id/navigation" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    app:menu="@menu/home_drawer_menu"> 

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

Это выход

enter image description here

Вот Gradle файлу

apply plugin: 'com.android.application' 

android { 
compileSdkVersion 23 
buildToolsVersion "23.0.3" 

defaultConfig { 
    applicationId "com.softoven.ultron" 
    minSdkVersion 15 
    targetSdkVersion 23 
    versionCode 1 
    versionName "1.0" 
} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 
} 

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:23.3.0' 
compile 'com.android.support:design:23.3.0' 

compile 'org.jsoup:jsoup:1.6.1' 
compile 'com.mikhaellopez:circularimageview:3.0.0' 
compile 'com.android.support:recyclerview-v7:23.3.0' 
compile 'com.mcxiaoke.volley:library:1.0.19' 
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' 
compile 'com.google.code.gson:gson:2.5' 

Как это сделать?

+0

Проверьте мой отве ниже. –

ответ

1

Я сделал следующие изменения в tablayout XML, то заголовки были видны

<android.support.design.widget.TabLayout 
      android:id="@+id/tab" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabTextColor="#fff" 
      app:tabGravity="fill" 
      app:tabMode="scrollable" 
      > 
+1

Спасибо! tabMode = "scrollable", в результате чего появились заголовки. Я сделал все остальное, как в книгах (адаптер с getPageTitle() и т. Д.). – dermatthias

2

В моем случае я решил эту проблему, заменив

tabLayout.setupWithViewPager(viewPager); 

К,

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

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

      } 

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

      } 
}); 

Я надеюсь, что это поможет вам.

+0

Это работало для названий? –

+0

полностью .. у меня была такая же проблема .. название не показывалось .. и это решение сработало для меня. –

+0

Я пробовал, чтобы это не сработало –

1

Это сделает трюк для вас. Добавьте свой Tab Layout в Runnable.

tabLayout.post(new Runnable() { 
    @Override 
    public void run() { 
     tabLayout.setupWithViewPager(viewPager); 
    } 
}); 
+0

Я сделал попробуйте этот трюк некоторое время назад, он не работал –

+0

@ ZeeshanShabbir Можете ли вы показать мне свою «Gradle»? пожалуйста, опубликуйте его в разделе «Вопрос». –

+0

Я разместил его –

0

В ваших стилях:

<style name="NavigationTabTextAppeareance" parent="TextAppearance.Design.Tab"> 
     <item name="android:textColor">#ffffff</item> 
     <item name="android:textStyle">bold</item> 
</style> 

В вашем XML:

<android.support.design.widget.TabLayout 
       android:id="@+id/tabs" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:layout_gravity="bottom" 
       app:tabMode="scrollable" 
       app:tabGravity="center" 
       app:tabIndicatorHeight="4dip" 
       app:tabTextAppearance="@style/NavigationTabTextAppeareance" 
       app:tabIndicatorColor="#ffffff" />