Tendo o problema de que o novo TabLayout usa a cor do indicador do valor colorAccent
, decidi me aprofundar na android.support.design.widget.TabLayout
implementação, descobrindo que não há métodos públicos para personalizar isso. No entanto, eu encontrei esta especificação de estilo do 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>
Com essa especificação de estilo, agora podemos personalizar o TabLayout assim:
<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"/>
E problema resolvido, a cor e a altura do indicador da guia podem ser alteradas a partir dos valores padrão.
parent="@style/Base.Widget.Design.TabLayout"
Com a biblioteca de suporte ao design, agora você pode alterá-los no xml:
Para alterar a cor do indicador TabLayout:
Para alterar a altura do indicador TabLayout:
fonte
Como não consigo postar um acompanhamento do comentário do desenvolvedor do Android , aqui está uma resposta atualizada para qualquer pessoa que precise definir programaticamente a cor do indicador de guia selecionado:
Da mesma forma, para altura:
Esses métodos foram adicionados recentemente à revisão 23.0.0 da Biblioteca de suporte , e é por isso que a resposta de Soheil Setayeshi usa reflexão.
fonte
fonte
Com a biblioteca de suporte desing v23, você pode definir programaticamente a cor e a altura.
Basta usar para a altura:
Aqui o javadoc oficial .
Basta usar para a cor:
Aqui o javadoc oficial .
Aqui você pode encontrar as informações no Google Tracker .
fonte
Para alterar a cor e a altura do indicador programaticamente, você pode usar a reflexão. por exemplo, para cores de indicadores, use o código abaixo:
e para alterar a altura do indicador, use "setSelectedIndicatorHeight" em vez de "setSelectedIndicatorColor" e invoque-o pela altura desejada
fonte
O indicador Foto usa isto:
fonte
do xml:
de java:
fonte
Você pode mudar isso usando xml
fonte
Basta colocar esta linha no seu código. Se você alterar a cor, altere o valor da cor entre parênteses.
fonte
O Android facilita.
Então, nós apenas dizemos
Isso nos dará uma cor azul normal e uma cor roxa selecionada.
Agora vamos definir a altura
E para altura dizemos
fonte