我一直在跟随Android开发者培训中的myfirstapp指南,但我遇到了一个问题,在定义颜色时,他们没有很好地进行解释。
他们提到,要创建自定义主题,可以按如下方式声明文本颜色:
themes.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme"
parent="@android:style/Theme.Holo.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="android:textColor">@style/MyActionBarTitleText</item>
<item name="android:actionBarTabTextStyle">@style/MyActionBarTabText</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar"
parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">@drawable/actionbar_background</item>
</style>
<!-- ActionBar title text -->
<style name="MyActionBarTitleText"
parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
<item name="android:textColor">@color/actionbar_text</item>
</style>
<!-- ActionBar tabs text styles -->
<style name="MyActionBarTabText"
parent="@android:style/Widget.Holo.ActionBar.TabText">
<item name="android:textColor">@color/actionbar_text</item>
</style>
</resources>
他们没有提到如何指定
@color/actionbar_text
,但常识(以及一些谷歌搜索)表明需要在values包中创建一个colors.xml文件:
colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="actionbar_text">#ff355689</color>
</resources>
然而,在尝试运行应用程序时,它会出现错误:
Process: com.example.myfirstapp, PID: 25997
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myfirstapp/com.example.myfirstapp.MainActivity}: java.lang.UnsupportedOperationException: Can't convert to color: type=0x1
如果我从colors.xml中删除该行,它将在找不到颜色引用时出错。我相当确信我的代码是正确的,有人能看到任何错误吗?
编辑
我想指出,实际上我正在使用与教程不同的themes.xml文件语法,因为教程编译不通过。教程使用了@style/Widget.Holo.ActionBar.TabText,我发现这实际上是Android的一个属性,所以我需要改用@android:style/Widget.Holo.ActionBar.TabText。