TabLayout (Android Design Library) Цвет Текста



Я использую новый TabLayout из библиотеки дизайна Android. Мне удалось установить textColor statelist с помощью tabLayout.setTabTextColors(colorstatelist)



Как я могу достичь того же с помощью стилей.xml?

449   4  

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

    Ничего не найдено.