2016-03-15 3 views
0

Я использую SlidingTabLayout с моей собственной компоновкой вкладок. Все работает так, как ожидалось; вкладки отображаются правильно (титры, порядок, цвета и т. д.), однако setDistributeEvenly не работает в этом сценарии. Более длинные вложенные вкладки имеют более длинный индикатор выбора, чем более короткие вкладки. Например, «Баскетбол» имеет гораздо более высокий показатель, чем «Гольф». Вот мой код. Как вы можете видеть, setDistributeEvenly имеет значение true.Почему setDistributeEvenly сбой при использовании настраиваемого макета вкладки в SlidingTabLayout?

ViewPager pager; 
    ViewPagerAdapter adapter; 
    SlidingTabLayout tabs; 

    adapter = new ViewPagerAdapter(getSupportFragmentManager(), 10, this); 

    pager = (ViewPager) findViewById(R.id.pager); 
    pager.setAdapter(adapter); 

    tabs = (SlidingTabLayout) findViewById(R.id.tab_layout); 
    tabs.setCustomTabView(R.layout.custom_tab, R.id.textView2); 
    tabs.setDistributeEvenly(true); 
    tabs.setBackgroundColor(getResources().getColor(R.color.red)); 
    tabs.setSelectedIndicatorColors(getResources().getColor(R.color.white)); 
    tabs.setViewPager(pager); 

Вот мой пользовательский макет:

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    android:id="@+id/tab_title" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="8dp" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:paddingTop="8dp" 
    android:textAppearance="?android:attr/textAppearanceSmall" 
    android:textColor="#ffffff"/> 

Я попытался установить ширину и высоту макета для различных комбинаций match_parent, wrap_content и отличаясь «дп» ы но безрезультатно либо. Отступ, который вы видите выше, ничего не меняет с точки зрения длины индикатора.

Есть ли у вас какие-либо идеи относительно того, почему setDistributeEvenly (true) потерпит неудачу в этом сценарии?

ответ

0

Вы должны установить tabLayout гравитацию:

tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

И не прилагайте tabLayout к прокрутке (приложение: tabMode = «прокручивать») в противном случае заливка сила тяжести не будет работать. Проверьте это Link

+0

Я использую Google SlidingTabLayout, а не просто TabLayout. Это что-то меняет? SlidingTabLayout не предлагает сразу TabLayout. – JackTheCripple

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