Type 2 is an attribute reference, as per TypedValue, so you have not put a color in that resource.
If you want to use styles/themes, use Context.obtainStyledAttributes or related methods which takes care of mapping attribute references through the current theme. I'd suggest looking at the source code for View and the various widgets (and their related XML styleable and style definitions) to see the standard way to do this. On Tue, May 11, 2010 at 12:08 AM, Mariano Kamp <[email protected]>wrote: > Hi Dianne. > > Thanks very much, almost there. > > I understand the procedure, it would do what I want, but I run into an > exception: > > D/NewsRobDefaultExceptionHandler( 1839): Caused by: > java.lang.UnsupportedOperationException: Can't convert to color: type=0x2 > D/NewsRobDefaultExceptionHandler( 1839): at > android.content.res.TypedArray.getColor(TypedArray.java:273) > D/NewsRobDefaultExceptionHandler( 1839): at > android.graphics.drawable.GradientDrawable.inflate(GradientDrawable.java:647) > D/NewsRobDefaultExceptionHandler( 1839): at > android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788) > D/NewsRobDefaultExceptionHandler( 1839): at > android.graphics.drawable.Drawable.createFromXml(Drawable.java:729) > D/NewsRobDefaultExceptionHandler( 1839): at > android.content.res.Resources.loadDrawable(Resources.java:1690) > > This happens when using it the way we described here in a drawable xml. > However to better understand the error I used it on other attributes and > when using it on the background attribute of a View it works. Maybe this > approach is incompatible with drawables that are expressed in xml? > > Btw. Is there any way to get the actual #rgb string for a color from a > theme? > > Cheers, > Mariano > > On Tue, May 11, 2010 at 8:02 AM, Dianne Hackborn <[email protected]>wrote: > >> You need to define an attribute for your value: >> >> <attr name="myColor" format="color" /> >> >> Then make a custom theme that supplies a value for it: >> >> <style name="MyTheme" parent="android:Theme"> >> <item name="com.my.package:myColor">#ff808080</item> >> </style> >> >> And now you can reference that value from other XML: >> >> <shape xmlns:android="http://schemas.android.com/apk/res/android >> >> " >> android:shape="rectangle"> >> <gradient android:startColor="?com.my.package:myColor" >> >> android:endColor="#66FFFFFF" >> android:angle="270" /> >> </shape> >> >> >> Note that "com.my.package" is your manifest's package name. >> >> Also I just wrote this by hand so I won't guarantee it is completely >> right. :} >> >> On Mon, May 10, 2010 at 11:02 AM, Mariano Kamp <[email protected]>wrote: >> >>> Hmmh, also no answer to this question on themes. Maybe the answer cannot >>> be given with two lines? So let me explain what I would expect step by step >>> and you stop me were I deviate from the Golden Path? I'll try yes/no >>> questions. >>> >>> In the simplest terms I would expect that in every place I can specify a >>> color in RGB (#ffff) I could also specify a symbolic name instead. This >>> should work like @color/xyz, but with one more level of indirection that >>> lets me switch between themes, like dark and light. >>> >>> Is that possible? >>> >>> I would expect those themes to be applicable to (a) widgets, (b) >>> drawables (see the mentioned example) and (c) when I need to style something >>> myself like HTML. Are (a) - (c) possible? >>> >>> Furthermore I would expect that I could define style keys myself, but I >>> got the impression that only keys from the "android" namespace can be used? >>> That lead me to believe that you can't define abstract colors, but only >>> styles for specific attributes used in the widgets' implementations. >>> >>> And again, if there is any meaningful documentation I would be happy to >>> read it. Just send me the link or name of the book. >>> >>> >>> On Sat, May 8, 2010 at 3:26 PM, Mariano Kamp <[email protected]>wrote: >>> >>>> Hi, >>>> >>>> I have trouble >>>> (example<http://groups.google.com/group/android-developers/browse_thread/thread/5b4ce3e49a1b63d2/>) >>>> wrapping my head around styles/themes. Can somebody help me or point me to >>>> actual documentation? >>>> >>>> Let's say I have a drawable that I want to use as the background of a >>>> layout: >>>> >>>> <shape xmlns:android="http://schemas.android.com/apk/res/android" >>>> android:shape="rectangle"> >>>> <gradient android:startColor="#9F9FA4" android:endColor="#66FFFFFF" >>>> android:angle="270" /> >>>> </shape> >>>> >>>> >>>> Now I want to have a dark and a light theme. Depending on the chosen theme >>>> I want to have a different value for startColor and endColor. How do I do >>>> that? I am aware of extending themes, but what do I put into the items? >>>> How do I reference those new values then? >>>> >>>> >>>> Cheers, >>>> >>>> Mariano >>>> >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Android Developers" group. >>> To post to this group, send email to [email protected] >>> To unsubscribe from this group, send email to >>> [email protected]<android-developers%[email protected]> >>> For more options, visit this group at >>> http://groups.google.com/group/android-developers?hl=en >>> >> >> >> >> -- >> Dianne Hackborn >> Android framework engineer >> [email protected] >> >> Note: please don't send private questions to me, as I don't have time to >> provide private support, and so won't reply to such e-mails. All such >> questions should be posted on public forums, where I and others can see and >> answer them. >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Android Developers" group. >> To post to this group, send email to [email protected] >> To unsubscribe from this group, send email to >> [email protected]<android-developers%[email protected]> >> For more options, visit this group at >> http://groups.google.com/group/android-developers?hl=en >> > > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected]<android-developers%[email protected]> > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en > -- Dianne Hackborn Android framework engineer [email protected] Note: please don't send private questions to me, as I don't have time to provide private support, and so won't reply to such e-mails. All such questions should be posted on public forums, where I and others can see and answer them. -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

