TabLayout (Android Design Library) Цвет Текста
Я использую новый TabLayout из библиотеки дизайна Android. Мне удалось установить textColor statelist с помощью tabLayout.setTabTextColors(colorstatelist)
Как я могу достичь того же с помощью стилей.xml?
4 ответов:
через атрибуты XML:
<android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="fixed" app:tabGravity="fill" app:tabTextColor="@color/your_unselected_text_color" app:tabSelectedTextColor="@color/your_selected_text_color"/>кроме того, есть атрибуты, такие как tabIndicatorColor или tabIndicatorHeight для дальнейшего стиля.
в коде:
tabLayout.setTabTextColors( getResources().getColor(R.color.your_unselected_text_color), getResources().getColor(R.color.your_selected_text_color) );поскольку этот старый способ устарел с API 23, альтернативой является:
tabLayout.setTabTextColors( ContextCompat.getColor(context, R.color.your_unselected_text_color), ContextCompat.getColor(context, R.color.your_selected_text_color) );
вот фрагмент кода для переопределения стиля текста и цвета выделенного текста
<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout"> <item name="tabTextAppearance">@style/MyCustomTabText</item> <item name="tabSelectedTextColor">@color/tab_text_act</item> </style> <style name="MyCustomTabText" parent="TextAppearance.AppCompat.Button"> <item name="android:textSize">14sp</item> <item name="android:textColor">@color/tab_text</item> </style>а вот фрагмент кода для макета
<android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/MyCustomTabLayout" />
все ответы выше верны, но я просто думаю, что лучше переопределить стили по умолчанию и изменить только конкретный элемент, который вы хотите изменить. Пример ниже выделит текст жирным шрифтом:
<style name="Widget.TabItem" parent="TextAppearance.Design.Tab"> <item name="android:textStyle">bold</item> </style>затем..,
app:tabTextAppearance="@style/Widget.TabItem"
вы просто должны переопределить
android:textAppearanceстиль. Потому что TabLayout использует textAppearance. вот небольшой фрагмент кода стиля.<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Below will reference with our custom style --> <item name="android:textAppearance">@style/my_tab_text</item> </style> <style name="my_tab_text" parent="Base.TextAppearance.AppCompat"> <item name="android:textColor">@android:color/holo_blue_dark</item> </style>и если вы не хотите ссылаться на свой Apptheme вы можете напрямую указать TabLayout, используя приведенный ниже фрагмент.
<android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:tabTextAppearance="@style/my_tab_text" app:tabIndicatorHeight="48dp"/>
Comments