2011-02-07 2 views
3

두 가지 다른 활동에서 동일한 그라데이션 드로어 블을 사용할 수 있지만 다른 색상을 사용하고 싶습니다. 는 I는 다음의 방법으로 활동 테마에 그라디언트 색상을 참조하는 생각 :테마 의존 색상을 사용하여 다시 그라디언트 드로어 블 가능

은 내가 활동에서

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <gradient 
     android:startColor="?backgroundTopColor" 
     android:endColor="?backgroundBottomColor" 
     android:angle="270" /> 
    <corners android:radius="0dp" /> 
</shape> 

를 입력 bg_gradient.xml에

<attr name="backgroundTopColor" format="color" /> 
<attr name="backgroundBottomColor" format="color" /> 

attrs.xml이에 후속 행을 추가했습니다 주제, 추가했습니다.

<item name="backgroundTopColor">#FFFFFFFF</item> 
<item name="backgroundBottomColor">#FFFFFF00</item> 

logcat에서 응용 프로그램 시작 후

02-07 14 : 03 : 59.479 : ERROR/AndroidRuntime (2096) : java.lang.UnsupportedOperationException가 :에 의한 색상으로 변환 할 수 없습니다 : 유형 = 0x2로
02-07 14시 3분 : 59.479 : ERROR/AndroidRuntime (2096) : android.content.res.TypedArray.getColor (TypedArray.java:326)
02-07 14 : 03 : 59.479 : ERROR/AndroidRuntime (2096) : android.graphics.drawable .GradientDrawable.inflate (GradientDrawable.java:647)
02-07 14 : 03 : 59.479 : ERROR/AndroidRuntime (2096) : android.graphics.drawable.Drawable.createFromXmlInner (Drawable.java:788)
02- 07 14 : 03 : 59.479 : ERROR/AndroidRuntime (2096) : android.graphics.drawable.Drawable.crea에서 teFromXml (Drawable.java:729)
02-07 14 : 03 : 59.479 : ERROR/AndroidRuntime (2096) : android.content.res.Resources.loadDrawable (Resources.java:1694)
02-07 14 : 03 : 59.479 : ERROR/AndroidRuntime (2096) : ... 29 더

어떻게 해결할 수 있습니까? API 레벨 = 8

답변

0

당신은 당신의 속성을 참조하는 대신 "?backgroundTopColor""?attr/backgroundTopColor"을 사용해야합니다

당신에게

NB 감사드립니다.

편집 : 간접적으로 색상을 참조하면 어떻게됩니까? 대신 테마의 말에의 :

<item name="backgroundTopColor">@color/myColor</item> 

그런 다음 colors.xml에 추가 :

<item name="backgroundTopColor">#FFFFFFFF</item> 

이 작업을 수행

<color name="myColor">#FFFFFFFF</color> 

내가 무슨 일이있을 수있는 것이 있다는 것을 의심 속성은 명시적인 색상을 요구합니다. 적어도 당신이 윤곽을 그렸던 것을 정확히했습니다. 단, 필자는 항상 내 테마에 맞추기보다는 간접적으로 색을 참조합니다.

+0

같은 오류가 발생했습니다. 그것은 작동하지 않습니다. : – Premier

+0

다른 아이디어로 업데이트 됨 –

+0

두 번째 아이디어도 작동하지 않습니다. –

관련 문제