Столкнувшись с проблемой того, что новый TabLayout использует цвет индикатора из значения colorAccent
, я решил покопаться в android.support.design.widget.TabLayout
реализации и обнаружил, что нет общедоступных методов для настройки этого. Однако я нашел эту спецификацию стиля 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>
Имея эту спецификацию стиля, теперь мы можем настроить TabLayout следующим образом:
<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"/>
И проблема решена, и цвет, и высота индикатора вкладки могут быть изменены со значений по умолчанию.
parent="@style/Base.Widget.Design.TabLayout"
Теперь с помощью библиотеки поддержки дизайна вы можете изменить их в xml:
Чтобы изменить цвет индикатора TabLayout:
Чтобы изменить высоту индикатора TabLayout:
источник
Поскольку я не могу опубликовать продолжение комментария разработчика Android , вот обновленный ответ для всех, кому нужно программно установить цвет индикатора выбранной вкладки:
Аналогично для высоты:
Эти методы были только недавно добавлены в версию 23.0.0 библиотеки поддержки , поэтому в ответе Сохейла Сетаеши используется отражение.
источник
источник
С помощью библиотеки поддержки дизайна v23 вы можете программно установить цвет и высоту.
Просто используйте для высоты:
Вот официальный javadoc .
Просто используйте для цвета:
Вот официальный javadoc .
Здесь вы можете найти информацию в Google Tracker .
источник
Для программного изменения цвета и высоты индикатора можно использовать отражение. например, для цвета индикатора используйте код ниже:
и для изменения высоты индикатора используйте "setSelectedIndicatorHeight" вместо "setSelectedIndicatorColor", затем вызовите его по желаемой высоте.
источник
Индикатор фото использует это:
источник
из xml:
из java:
источник
Вы можете изменить это с помощью xml
источник
Просто вставьте эту строку в свой код. Если вы измените цвет, измените значение цвета в скобках.
источник
Android упрощает эту задачу.
Итак, мы просто говорим
Это даст нам нормальный синий цвет и выбранный фиолетовый цвет.
Теперь устанавливаем высоту
А по высоте мы говорим
источник