tabTextAppearance属性不接受十六进制颜色代码?

时间:2017-01-28 21:06:32

标签: android xml android-layout

我有以下代码:

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.yazan.mylanguage.MainActivity">

    <android.support.design.widget.TabLayout
        style="@style/CategoryTab"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
     />
    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

styles.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <!-- Style for a tab that displays a category name -->
    <style name="CategoryTab" parent="Widget.Design.TabLayout">
        <item name="tabIndicatorColor">@android:color/white</item>
        <item name="tabSelectedTextColor">@android:color/white</item>
        <item name="tabTextAppearance">@style/CategoryTabTextAppearance</item>
    </style>

    <!-- Text appearance style for a category tab -->
    <style name="CategoryTabTextAppearance" parent="TextAppearance.Design.Tab">
        <item name="android:textColor">#A8A19E</item>
    </style>
</resources>

当我尝试将十六进制颜色代码#A8A19E代替@style/CategoryTabTextAppearance时,它不起作用并给我一个错误,  为什么会这样?虽然此属性接受颜色值, 我需要解释一下!?

2 个答案:

答案 0 :(得分:1)

在文件中定义十六进制颜色代码,然后按@color/color_name引用该颜色。

如果您在此resource文件中将颜色定义为 -

`<item name="my_color" type="color">#A8A19E</item>`

因此,文本外观的resource文件中的最终代码将为

` <!-- Text appearance style for a category tab -->
    <style name="CategoryTabTextAppearance" parent="TextAppearance.Design.Tab">
        <item name="android:textColor">@color/my_color</item>
    </style>`

答案 1 :(得分:0)

顾名思义,tabTextAppearance属性采用TextAppearance。它不直接采用颜色。您在styles.xml中包含的代码 - 您正在引用文本外观样式 - 是正确的。

请参阅styleable documentation for TextAppearance以获取文本外观样式中的有效属性列表。