최신 v7 appcompat support lib (r21, Lollipop)을 사용하여 API 10에서 ActionBar 제목의 스타일을 지정하려고 시도 할 때이 오류가 발생했습니다. API 15 이상에서 제대로 작동합니다.TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse를 사용하는 중 오류가 발생했습니다.
내 r21이 올 때까지 내 동일한 코드가 사용되어 많은 문제가 발생했습니다.
스택 추적 :
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)
내 애플의 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 res/styles_base_text.xml
APPCOMPAT :
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>
, 내 styles.xml
에서 ".Inverse"를 제거하면, 그것은 잘 작동합니다.
이 라인에서 충돌이 발생합니다. http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3_r1/android/widget/TextView.java/#1616 색상을 얻으려고 시도하는 중입니다.
어떻게 수정해야합니까?
봐가 지원 lib에 Base.TextAppearance.AppCompat.Title.Inverse되지 있나요? – Lucas
예, 'textColorHighlight'가 (가) API 레벨 10에서 누락 된'android : attr/textColorHighlightInverse'를 가리키고 있습니다. – vovahost