Da ich das Problem hatte, dass das neue TabLayout die Indikatorfarbe aus dem Wert verwendet colorAccent
, entschied ich mich, mich mit der android.support.design.widget.TabLayout
Implementierung zu befassen und stellte fest, dass es keine öffentlichen Methoden gibt, um dies anzupassen. Ich fand jedoch diese Stilspezifikation des TabLayout:
<style name="Base.Widget.Design.TabLayout" parent="android:Widget">
<item name="tabMaxWidth">@dimen/tab_max_width</item>
<item name="tabIndicatorColor">?attr/colorAccent</item>
<item name="tabIndicatorHeight">2dp</item>
<item name="tabPaddingStart">12dp</item>
<item name="tabPaddingEnd">12dp</item>
<item name="tabBackground">?attr/selectableItemBackground</item>
<item name="tabTextAppearance">@style/TextAppearance.Design.Tab</item>
<item name="tabSelectedTextColor">?android:textColorPrimary</item>
</style>
Mit dieser Stilspezifikation können wir das TabLayout jetzt wie folgt anpassen:
<android.support.design.widget.TabLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@id/pages_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:tabIndicatorColor="@android:color/white"
app:tabIndicatorHeight="4dp"/>
Wenn das Problem behoben ist, können sowohl die Farbe als auch die Höhe der Registerkartenanzeige von ihren Standardwerten geändert werden.
parent="@style/Base.Widget.Design.TabLayout"
Mit der Design-Support-Bibliothek können Sie sie jetzt in der XML ändern:
So ändern Sie die Farbe der TabLayout-Anzeige:
So ändern Sie die Höhe des TabLayout-Indikators:
quelle
Da ich keine Nachverfolgung des Kommentars des Android-Entwicklers veröffentlichen kann , ist hier eine aktualisierte Antwort für alle anderen, die die ausgewählte Tab-Indikatorfarbe programmgesteuert einstellen müssen:
Ebenso für die Höhe:
Diese Methoden wurden erst kürzlich zu Revision 23.0.0 der Support Library hinzugefügt, weshalb in der Antwort von Soheil Setayeshi Reflexion verwendet wird.
quelle
quelle
Mit der Desing Support Library v23 können Sie Farbe und Höhe programmgesteuert einstellen.
Verwenden Sie einfach für die Höhe:
Hier der offizielle Javadoc .
Verwenden Sie einfach für die Farbe:
Hier der offizielle Javadoc .
Hier finden Sie die Informationen im Google Tracker .
quelle
Um die Farbe und Höhe des Indikators programmgesteuert zu ändern, können Sie die Reflexion verwenden. Verwenden Sie zum Beispiel für die Indikatorfarbe den folgenden Code:
und um die Höhe des Indikators zu ändern, verwenden Sie "setSelectedIndicatorHeight" anstelle von "setSelectedIndicatorColor" und rufen Sie ihn dann mit der gewünschten Höhe auf
quelle
Foto Indikator verwenden Sie diese:
quelle
von xml:
von Java:
quelle
Sie können dies mit XML ändern
quelle
Fügen Sie einfach diese Zeile in Ihren Code ein. Wenn Sie die Farbe ändern, ändern Sie den Farbwert in Klammern.
quelle
Android macht es einfach.
Also sagen wir einfach
Das gibt uns eine blaue normale Farbe und eine lila ausgewählte Farbe.
Jetzt stellen wir die Höhe ein
Und für die Höhe sagen wir
quelle