2015-06-12 11 views
14

Ich benutze Material Design-Bibliothek und erstellen Layout mit CoordinatorLayout, AppBarLayout, RecyclerView und TabLayout.Tab-Anzeige in der TabLayout-Design-Support-Bibliothek kann nicht angezeigt werden

Mein Problem ist ich kann Tab-Indikator in Tablayout nicht sehen. Unten ist meine XML-Datei, die ich in AppCompactActivity verwende.

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

Im Folgenden finden Sie Bildschirm, die Tab-Anzeige nicht so zeigen kann jemand gewusst, was mir fehlt.

Screen which missing Tab Indicator

Antwort

26

Ich denke es Fehler ist auf Design Support Bibliothek. dass Wenn Sie gelten sowohl Eigenschaft zugleich

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

die HintergrundfarbeÜberlappung derRegisterkarte Anzeige. Aus diesem Grund ist die Tab-Anzeige nicht sichtbar.

Wenn Sie die TabBackground-Farbeigenschaft entfernen, können Sie das Kennzeichen sehen.

[Update auf 25-06-2015]

Wie ich sagte, es ist Bug auf Design Support Bibliothek. Ich habe es Android-Bug-Quelle gemeldet. hier ist der Referenz https://code.google.com/p/android/issues/detail?id=176540.

So Status für dieses Problem ist FutureRelease so Bug ist behoben. Und es wird in der zukünftigen Bibliothek kommen.

[Update 20-07-2015]

der Fehler behoben ist und in v 22.2.1 freigegeben. Sie können es auch auf dem obigen Link überprüfen.

+1

Ok Lassen Sie uns Ich überprüfe und habe Sie einen anderen Weg, um beide arbeiten Hintergrundfarbe ändern und Tab-Anzeige Farbe. – Herry

+1

Für jetzt gibt es keine Lösung. Sie können die benutzerdefinierte Ansicht jedoch an den Tab übergeben. So können Sie für jede Registerkarte LinearLayout mit textView und ImageView übergeben. Und Sie können Hintergrundfarbe auf LinearLayout festlegen. – Moinkhan

+0

Immer noch in v23. + Zu –

0

Sie RecyclerView als Hauptinhalt verwenden, ViewPager enthalten RecyclerView verwenden und stellen Sie sicher, dass Sie viewpage Attribut app:layout_behavior="@string/appbar_scrolling_view_behavior"

+0

Ich habe Ihren vorgeschlagenen ViewPager ausprobiert und innerhalb des ersten Fragments habe ich RecycleView, aber mein TabLayout kann den Tab-Indikator nicht anzeigen. – Herry

+0

haben Sie 'tabLayout.setupWithViewPager (viewPager);'? –

+0

Verweisen Sie dieses Beispielprojekt von Chris Banes https://github.com/chrisbanes/cheesesquare.git –

0

Verwenden app1 geben: tabIndicatorColor statt App: tabIndicatorColor. Wenn Sie das Attribut verwenden, wird automatisch der Namespace app1 erstellt.

0

Ich habe gerade diese Fehler gesetzt Hintergrundfarbe programmatisch

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

oder in xml

android:background="@color/primary" 

Aber ich weiß nicht, ob es irgendein Problem gibt, wenn Sie Hintergrundfarbe auf diese Weise eingestellt

7

Sie können unter Methoden

1 Veränderung in xml App: tabIndicatorColor = "" stellen Sie Ihre Anzeige Farbe

2 Erstellen Kostüm Thema

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

Set Thema in Ihrem Tablayout

0

Hier gehen Sie .. :)

ändern Ihr Attribut

App: tabBackground = "@ color/tab_bg"

zu

android: Hintergrund = "@ color/tab_bg"

Ihre endgültige Code ..

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