2016-11-01 2 views
0

У меня возникла проблема с использованием TabLayout. Я обновил библиотеку дизайна до версии v25.0.0, и теперь названия таблеток не отображаются. Вот мой код:Вкладки Название не отображается

public void setupTabs() { 
    animateUserProfileOptions(); 
    setupViewPager(viewPager); 
} 

public void setupViewPager(final ViewPager viewPager) { 
    TabPagerAdapter adapter = new TabPagerAdapter(getSupportFragmentManager()); 
    Fragment news = new NotificationNews(); 
    Fragment request = new NotificationRequests(); 

    adapter.addFragment(news , getApplicationContext().getString(R.string.notification_news)); 
    adapter.addFragment(request, getApplicationContext().getString(R.string.notification_request)); 
    viewPager.setAdapter(adapter); 
    tlUserProfileTabs.post(new Runnable() { 
     @Override 
     public void run() { 
      tlUserProfileTabs.setupWithViewPager(viewPager); 
     } 
    }); 
} 

Вот мой адаптер:

public class TabPagerAdapter extends FragmentPagerAdapter { 

    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public TabPagerAdapter(android.support.v4.app.FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public android.support.v4.app.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); 
    } 

} 

Вот мой XML макет enter code here

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="@color/home_primary" 
     app:layout_scrollFlags="scroll|enterAlways" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tlUserProfileTabs" 
     android:layout_width="match_parent" 
     android:layout_height="48dp" 
     android:background="#f2f2f2" 
     app:tabGravity="fill" 
     app:tabIndicatorColor="#28A9E0" 
     app:tabTextColor="#999999" 
     app:tabSelectedTextColor="#28A9E0" 
     app:tabTextAppearance="@drawable/tab_selector" 
     app:tabIndicatorHeight="4dp" 
     app:tabMode="fixed" /> 
</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="@string/appbar_scrolling_view_behavior" /> 

Я пропускаю что-то или что? Любая помощь будет оценена, спасибо.

+0

Вы не должны использовать 'getApplicationContext'. Вы должны использовать 'Активность' как« Контекст ». И почему вы создаете «Runnable» для настройки «TabLayout»? – Bryan

+0

Да, я добавляю runnable, который я разместил в коде @Bryan –

+0

* Почему вы добавляете «Runnable»? Нет причин. – Bryan

ответ

2

попытаться удалить tabTextAppearance

app:tabTextAppearance="@drawable/tab_selector" 

It может противоречить e выбранный цвет текста и цвет текста

+0

спасатель бросить спасибо большое –

0

TabPagerAdapter должен выглядеть следующим образом:

public class TabPagerAdapter extends FragmentPagerAdapter { 

    private final ArrayMap<CharSequence, Fragment> mData = new ArrayMap<>(); 

    private TabPagerAdapter(FragmentManager manager { 
     super(manager); 
    } 

    public void addFragment(CharSequence title, Fragment fragment) { 
     mData.put(title, fragment); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mData.valueAt(position); 
    } 

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

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mData.valueAt(position); 
    } 

} 

И установка должна выглядеть следующим образом:

public void setupViewPager() { 
    TabPagerAdapter adapter = new TabPagerAdapter(getSupportFragmentManager()); 
    adapter.addFragment(getString(R.string.notification_news, new NotificationNews()); 
    adapter.addFragment(getString(R.string.notification_request, new NotificationRequest()); 

    mViewPager.setAdapter(adapter); 
    mTabLayout.setupWithViewPager(mViewPager); 
} 
+0

Я попробовал, ничто не изменило ваш код, упростил мой ничего больше @Bryan –

+0

@MostafaAddam Тогда это может быть что-то с вашим макетом или, возможно, кодом в вашей «Деятельности». Вы вообще настроили стиль своего 'TabLayout'? Не могли бы вы разместить код 'Activity' и ваш XML? – Bryan

+0

check it i edit my question @Bryan –

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