Adam,

I am not sure about the extra indirection level you have in your code (the "?attr" stuff), but this should work:

<declare-styleable name="MainSplash">
<attr name="splashDrawable" format="reference" />
</declare-styleable>

<style name="Theme.MyCustomTheme"  parent="@android:style/Theme">
<item name="splashDrawable">@drawable/splash</item>
</style>

With this in the manifest:

<activity .....  android:theme="@style/Theme.MyCustomTheme" ... />

And then:

TypedArray a = this.obtainStyledAttributes(R.styleable.MainSplash);

Drawable d1 = a.getDrawable(R.styleable.MainSplash_splashDrawable);

        a.recycle();

BTW, you can put all this xml stuff in one file - the name doesn't matter, as long as it's inside res/values.

--- Kostya

10.01.2011 13:09, Adam Goodchild пишет:
Ok, I have the following files: attrs.xml, styles.xml, themes.xml
Here is my attrs.xml file:

         <!-- Attributes -->
        <attr name="myMainSplashImage" format="reference"/>

         <declare-styleable name="MainSplash">
                <attr name="splashDrawable" format="reference"/>
        </declare-styleable>

Here is my themes.xml file:

         <style name="Theme.MyCustomTheme" parent="@android:style/
Theme">
                <item name="myMainSplashImage">@drawable/splash</item>
        </style>

Here is my styles.xml file:

         <style name="MainSplash">
                <item name="splashDrawable">?attr/myMainSplashImage</item>
        </style>

I have looked at different tutorials and libraries (GreenDroid) to
implement the above.
So I have basically set my custom attribute to whatever I have defined
in my Theme file. This allows me to create different theme files for
different projects (as this is a library project).

I have assigned the Theme to the entire library project. I dont know
if I now have to assign something else to my splash layout file?

On Jan 10, 9:53 am, Kostya Vasilyev<[email protected]>  wrote:
Where and how are you setting attribute values?

Your call to getStylableAttributes is looking for attribute values in
the activity's theme, is that where you've specified your values?

-- Kostya

10.01.2011 12:35, Adam Goodchild пишет:



Hey,
Ive been looking into getting Custom Attributes working within an
application. I have this working up to the point where I am able to
assign the custom attribute via XML to one of my Views (a Background
or Image Source for example).
What I now want to do is access the Custom Attributes via Code, within
my Activity. I am not implementing custom Views here. I am just
wanting to access, within my Activity, the custom attributes that I
have defined. I will use these to programatically change the look of
my List View based on certain criteria.
Is there a way I can do this? I have the following code, but it does
not work, returns null each time. The code is just a test to assign a
background of the splash programatically.
      @Override
      public void onCreate(Bundle icicle) {
           super.onCreate(
           setContentView(R.layout.splash);
           TypedArray a =
getApplicationContext().obtainStyledAttributes(R.styleable.MainSplash);
           int i =
a.getResourceId(R.styleable.MainSplash_splashDrawable, 0);
       }
I always get returned '0' when using the above code. Any ideas?
--
Kostya Vasilyev -- WiFi Manager + pretty widget --http://kmansoft.wordpress.com


--
Kostya Vasilyev -- WiFi Manager + pretty widget -- http://kmansoft.wordpress.com

--
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

Reply via email to