The "?foo" syntax is a reference to a theme attribute.
To complete this, you need to first create a theme that has these
attributes:
<style name="FooBarTheme" parent="@android:style/Theme">
<item name="foo">value</item>
</style>
and then specify this theme for your activity:
<activity name="....."
theme="@style/FooBarTheme"/>
Then the widgets (I hope you mean views by that) will be able to resolve
"?foo" to "value".
And by the way, using hard-coded screen resolution qualifiers (e.g. 320x480)
is usually a bad idea.
-- Kostya
2011/6/9 Danny D <[email protected]>
> Hi,
>
> I'm trying to set a widget's "style" attribute with a reference to a
> custom attribute that's been loaded with a real-concrete style.
>
> The Android SDK docs show an explicit example for just setting the
> textColor attribute based on a style reference:
>
> <EditText id="text"
> android:layout_width="fill_parent"
> android:layout_height="wrap_content"
> android:textColor="?android:textColorSecondary"
> android:text="@string/hello_world" />
>
>
> I'm trying to do this for the entire widget's style, like this....
>
> <Button style="?FoobarButtonStyle"
> android:id="@android:id/button1"
> android:text="@string/button_cancel"
> android:layout_weight="1""/>
>
>
>
> When doing this, I get a runtime crash indicating that I have not set
> the required elements, but these are set within the style referenced
> by "?FoobarButtonStyle"
>
> Is this possible? Anyone tried anything like this? Any help on the
> use of the "?" operator and setup of attributes?
>
>
> BACKGROUND INFO
>
> Here's more info on the strategy that I've ended up taking:
>
> First, I setup a set of attributes which map to all of the styles that
> I'm using in the widgets, note that I've set the type of attribute to
> "reference," because I think that I'm referencing another resource and
> not just string / integer type:
>
> <declare-styleable name="FoobarStyleMap">
> <attr name="FoobarSetupWizardStyle" format="reference"/>
> <attr name="FoobarSetupWizardStyle_Heading"
> format="reference"/>
> <attr name="FoobarSetupWizardStyle_Heading_Black"
> format="reference"/
> >
> <attr name="FoobarSetupWizardStyle_Heading_Orange"
> format="reference"/>
> <attr name="FoobarSetupWizardStyle_Body"
> format="reference"/>
> <attr name="FoobarSetupWizardStyle_Body_Black"
> format="reference"/>
> ...
> </declare-styleable>
>
> Then, I created an actual style which maps actual style elements to
> the attributes:
>
> <style name="Resolution_320x480">
> <item name="FoobarSetupWizardStyle">@style/
> FoobarSetupWizard_320x480</item>
> <item name="FoobarSetupWizardStyle_Heading">@style/
> FoobarSetupWizard_320x480.Heading</item>
> <item name="FoobarSetupWizardStyle_Heading_Black">@style/
> FoobarSetupWizard_320x480.Heading.Black</item>
> <item name="FoobarSetupWizardStyle_Heading_Orange">@style/
> FoobarSetupWizard_320x480.Heading.Orange</item>
> <item name="FoobarSetupWizardStyle_Body">@style/
> FoobarSetupWizard_320x480.Body</item>
> <item name="FoobarSetupWizardStyle_Body_Black">@style/
> FoobarSetupWizard_320x480.Body.Black</item>
> <item name="FoobarSetupWizardStyle_Body_White">@style/
> FoobarSetupWizard_320x480.Body.White</item>
> <item name="FoobarSetupWizardStyle_Body_Orange">@style/
> FoobarSetupWizard_320x480.Body.Orange</item>
> <item name="FoobarSetupWizardStyle_Fineprint">@style/
> FoobarSetupWizard_320x480.Fineprint</item>
> ....
> </style>
>
>
>
>
> --
> 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
--
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