Mając problem z tym, że nowy TabLayout używa koloru wskaźnika z wartości colorAccent
, zdecydowałem się zagłębić w android.support.design.widget.TabLayout
implementację, stwierdzając, że nie ma publicznych metod dostosowywania tego. Jednak znalazłem tę specyfikację stylu 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>
Mając tę specyfikację stylu, możemy teraz dostosować TabLayout w następujący sposób:
<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"/>
Po rozwiązaniu problemu zarówno kolor wskaźnika karty, jak i wysokość można zmienić z wartości domyślnych.
parent="@style/Base.Widget.Design.TabLayout"
Dzięki bibliotece wsparcia projektowania możesz teraz zmienić je w xml:
Aby zmienić kolor wskaźnika TabLayout:
Aby zmienić wysokość wskaźnika TabLayout:
źródło
Ponieważ nie mogę opublikować uzupełnienia komentarza programisty Androida , oto zaktualizowana odpowiedź dla każdego, kto musi programowo ustawić kolor wskaźnika wybranej karty:
Podobnie w przypadku wysokości:
Metody te zostały dopiero niedawno dodane do wersji 23.0.0 Biblioteki wsparcia , dlatego odpowiedź Soheila Setayeshiego wykorzystuje refleksję.
źródło
źródło
Dzięki bibliotece wsparcia projektowania v23 możesz programowo ustawić kolor i wysokość.
Po prostu użyj do wysokości:
Tutaj oficjalny plik javadoc .
Po prostu użyj do koloru:
Tutaj oficjalny plik javadoc .
Tutaj możesz znaleźć informacje w Google Tracker .
źródło
Aby programowo zmienić kolor i wysokość wskaźnika, możesz użyć odbicia. na przykład dla koloru wskaźnika użyj kodu poniżej:
i aby zmienić wysokość wskaźnika użyj "setSelectedIndicatorHeight" zamiast "setSelectedIndicatorColor", a następnie wywołaj go o żądaną wysokość
źródło
Wskaźnik Foto używa tego:
źródło
z xml:
z java:
źródło
Możesz to zmienić za pomocą XML
źródło
Po prostu umieść tę linię w swoim kodzie. Jeśli zmienisz kolor, zmień wartość koloru w nawiasach.
źródło
Android to ułatwia.
Więc po prostu mówimy
To da nam niebieski normalny kolor i fioletowy wybrany kolor.
Teraz ustawiamy wysokość
Mówimy o wysokości
źródło