Reputation:
Encountered this error trying to style the ActionBar title, on API 10, using the latest v7 appcompat support lib (r21, Lollipop). Works fine on API 15+ though.
my same code used to work fine until this r21 came along, causing many problems.
stack trace:
11-05 02:08:49.628: E/AndroidRuntime(527): Caused by: java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
11-05 02:08:49.628: E/AndroidRuntime(527): at android.content.res.TypedArray.getColor(TypedArray.java:326)
11-05 02:08:49.628: E/AndroidRuntime(527): at android.widget.TextView.setTextAppearance(TextView.java:1616)
11-05 02:08:49.628: E/AndroidRuntime(527): at android.support.v7.widget.Toolbar.setTitle(Toolbar.java:579)
11-05 02:08:49.628: E/AndroidRuntime(527): at android.support.v7.internal.widget.ToolbarWidgetWrapper.setTitleInt(ToolbarWidgetWrapper.java:285)
11-05 02:08:49.628: E/AndroidRuntime(527): at android.support.v7.internal.widget.ToolbarWidgetWrapper.setWindowTitle(ToolbarWidgetWrapper.java:267)
11-05 02:08:49.628: E/AndroidRuntime(527): at android.support.v7.internal.widget.ActionBarOverlayLayout.setWindowTitle(ActionBarOverlayLayout.java:679)
11-05 02:08:49.628: E/AndroidRuntime(527): at android.support.v7.app.ActionBarActivityDelegateBase.onTitleChanged(ActionBarActivityDelegateBase.java:461)
11-05 02:08:49.628: E/AndroidRuntime(527): at android.support.v7.app.ActionBarActivity.onTitleChanged(ActionBarActivity.java:176)
11-05 02:08:49.628: E/AndroidRuntime(527): at android.app.Activity.onPostCreate(Activity.java:916)
11-05 02:08:49.628: E/AndroidRuntime(527): at android.app.Instrumentation.callActivityOnPostCreate(Instrumentation.java:1108)
My app's res/styles.xml
:
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
<item name="actionBarStyle">@style/AppBaseTheme.ActionBar</item>
</style>
<style name="AppBaseTheme.ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid">
<item name="titleTextStyle">@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse</item>
</style>
v7 appcompat res/styles_base_text.xml
:
53 <style name="Base.TextAppearance.AppCompat.Title">
54 <item name="android:textSize">@dimen/abc_text_size_title_material</item>
55 <item name="android:textColor">?android:textColorPrimary</item>
56 </style>
57
58 <style name="Base.TextAppearance.AppCompat.Title.Inverse">
59 <item name="android:textColor">?android:attr/textColorPrimaryInverse</item>
60 <item name="android:textColorHint">?android:attr/textColorHintInverse</item>
61 <item name="android:textColorHighlight">?android:attr/textColorHighlightInverse</item>
62 <item name="android:textColorLink">?android:attr/textColorLinkInverse</item>
63 </style>
However, once I removed the ".Inverse" in my styles.xml
, it works fine.
It crashes at this line http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3_r1/android/widget/TextView.java/#1616 while trying to get the colorHightlight.
Any idea how to fix?
Upvotes: 3
Views: 4844
Reputation: 36049
It may be that in API 10 there is no Base.TextAppearance.AppCompat.Title.Inverse theme.
You should check if the theme is present in API 10.
A solution may be to define a common base theme that inherits from a different parent theme included in API 10.
res/values-v10/themes.xml:
<style name="Base.TextAppearance.AppCompat.Title">
<item name="android:textColor">?android:attr/textColorPrimaryInverse</item>
<item name="android:textColorHint">?android:attr/textColorHintInverse</item>
<item name="android:textColorHighlight">16842905</item>
<item name="android:textColorLink">?android:attr/textColorLinkInverse</item>
</style>
You can definitely see that textColorHighlightInverse is not present in API level 10.
Check this textColorHighlightInverse link and select API level 10 in left menu.
Also have a look at this https://code.google.com/p/android/issues/detail?id=18659
Upvotes: 2