2015-06-12 2 views
14

Я использую библиотеку материалов и создаю макет с использованием CoordinatorLayout, AppBarLayout, RecyclerView и TabLayout.Невозможно увидеть индикатор вкладки в библиотеке поддержки дизайна TabLayout

Моя проблема в том, что я не могу видеть индикатор вкладки в Tablayout. Ниже приводится мой xml-файл, который я использую в AppCompactActivity.

<android.support.design.widget.CoordinatorLayout 
     android:id="@+id/coodinate_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@+id/btn_next_screen"> 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/list_recycle" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginBottom="30dp" 
      android:background="@color/white" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior" 

      /> 

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

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar_home" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="?attr/colorPrimary" 
       android:minHeight="?attr/actionBarSize" 
       app:layout_scrollFlags="scroll|enterAlways" 

       > 


      </android.support.v7.widget.Toolbar> 

      <android.support.design.widget.TabLayout 
       android:id="@+id/tab_layout" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       app:tabBackground="@color/tab_bg" 
       app:tabIndicatorColor="@color/tab_indicator" 
       app:tabIndicatorHeight="5dp" 
       app:tabMode="fixed" 

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


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


     <android.support.design.widget.FloatingActionButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="15dp" 
      app:layout_anchor="@+id/list_recycle" 
      app:layout_anchorGravity="bottom|right" 
      android:id="@+id/floatin_ab_home" 
      app:fabSize="mini" 
      android:src="@drawable/ic_content_add" 

      /> 


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

Ниже приведен экран, в котором не отображается индикатор вкладки, чтобы можно было узнать, что мне не хватает.

Screen which missing Tab Indicator

ответ

26

Я думаю это ошибка в библиотеке Design Support. что Когда Вы применяете как свойство одновременно

app:tabBackground="@color/tab_bg" 
app:tabIndicatorColor="@color/tab_indicator" 

цвет фонаперекрытия индикаторавкладки. поэтому индикатор табуляции не отображается.

Если вы удалите свойство цвета tabBackground, вы увидите индикатор.

[Update на 25-06-2015]

Как я уже сказал это ошибка в библиотеке Design Support. Я сообщил об этом в источник ошибок для Android. здесь приведено refrence https://code.google.com/p/android/issues/detail?id=176540.

Таким образом, статус этого вопроса составляет FutureRelease, поэтому исправлена ​​ошибка. И это придет в будущей библиотеке.

[Обновление 20-07-2015]

ошибка исправлена ​​и выхода в ст 22.2.1. вы также можете проверить его по ссылке выше.

+1

Хорошо давайте я проверяю и у вас есть другой способ сделать как изменение цвета рабочего фона, так и цвет индикатора табуляции. – Herry

+1

Пока нет решения. Но вы можете передать пользовательский вид на вкладку. Поэтому для каждой вкладки вы можете передать LinearLayout, содержащий textView и ImageView. И вы можете установить цвет backgroud для LinearLayout. – Moinkhan

+0

Все еще сохраняются в v23. + Тоже –

0

Вы используете RecyclerView в качестве основного содержания, используйте ViewPager содержащий RecyclerView и убедитесь, что вы даете ViewPage атрибуту app:layout_behavior="@string/appbar_scrolling_view_behavior"

+0

Я попробовал ваш предложенный ViewPager и внутри Первый фрагмент у него есть RecycleView, но пока TabLayout не смог показать индикатор Tab. – Herry

+0

Вы назвали 'tabLayout.setupWithViewPager (viewPager);'? –

+0

См. Этот образец проекта Chris Banes https://github.com/chrisbanes/cheesesquare.git –

0

Используйте APP1: tabIndicatorColor вместо приложения: tabIndicatorColor. При использовании атрибута он автоматически создаст пространство имен app1.

0

Я только исправила эту ошибку установить цвет фона программно

tabLayout.setBackgroundColor(getResources().getColor(R.color.primary)); 

или в XML

android:background="@color/primary" 

Но я не знаю, есть ли какие-либо проблемы при установке цвет фона таким образом

7

1 Изменение в xml приложение: tabIndicatorColor = "" установить цвет индикатора

2 создания CoSTUME THEME

<style name="AppTheme.TabStyle" parent="Widget.Design.TabLayout"> 
     <item name="tabTextAppearance">@style/AppTheme.TextStyle</item> 
     <item name="tabTextColor">@color/primaryDark</item> 
     <item name="tabSelectedTextColor">@color/white</item> 
     <item name="tabIndicatorColor">@color/primaryDark</item> 
     <item name="tabIndicatorHeight">3dp</item> 
     <item name="android:background">?attr/colorPrimary</item> 
    </style> 

    <style name="AppTheme.TextStyle" parent="TextAppearance.Design.Tab"> 
     <item name="android:textSize">14sp</item> 
     <item name="textAllCaps">true</item> 
    </style> 

набор темы в Tablayout

0

Здесь вы идете .. :)

Изменить Ваш атрибут

приложение: tabBackground = "@ цвет/tab_bg"

к

Android: фон = "@ цвет/tab_bg"

окончательный код ..

<android.support.design.widget.TabLayout 
      android:id="@+id/tab_layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@color/tab_bg" 
      app:tabIndicatorColor="@color/tab_indicator" 
      app:tabIndicatorHeight="5dp" 
      app:tabMode="fixed"> 
</android.support.design.widget.TabLayout> 
Смежные вопросы