2014-11-05 7 views
2

최신 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 색상을 얻으려고 시도하는 중입니다.

어떻게 수정해야합니까?

답변

2

API 10에는 Base.TextAppearance.AppCompat.Title.Inverse 테마가 없을 수 있습니다. 테마 API (10) 에있는 경우
당신은 확인해야합니다 해결책은 API (10)

고해상도/값-V10/테마에 포함 된 다른 상위 테마에서 상속 공통 기본 테마를 정의 할 수 있습니다. 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> 

당신은 확실히 textColorHighlightInverse는 API 레벨에 존재하지 않는 것을 볼 수있다 (10)
확인이 textColorHighlightInverse 링크 및 왼쪽 메뉴에서 선택 API 레벨 10.

또한이 https://code.google.com/p/android/issues/detail?id=18659

+1

봐가 지원 lib에 Base.TextAppearance.AppCompat.Title.Inverse되지 있나요? – Lucas

+1

예, 'textColorHighlight'가 (가) API 레벨 10에서 누락 된'android : attr/textColorHighlightInverse'를 가리키고 있습니다. – vovahost

관련 문제