Tried using it on 4.0.3, the onCreateDrawableState method is not getting called.
On Tuesday, April 1, 2008 4:52:19 AM UTC+5:30, Megha wrote: > > Hi, > > You can use the mergeDrawableStates() method of the View class to provide > your custom states: > > > http://code.google.com/android/reference/android/view/View.html#mergeDrawableStates(int[],%20int[]) > > Try the steps below to create new custom states: > > 1) Define the state resources in res/values/attrs.xml > > <declare-styleable name="MyCustomState"> > <attr name="state_fried" format="boolean" /> > <attr name="state_baked" format="boolean" /> > </declare-styleable> > > 2) In your custom view class : > > A) Declare the state variables: > > private static final int[] FRIED_STATE_SET = { > R.attr.state_fried > }; > > private static final int[] BAKED_STATE_SET = { > R.attr.state_baked > }; > > > B) Override the onCreateDrawableState() method: > > @Override > protected int[] onCreateDrawableState(int extraSpace) { > final int[] drawableState = super.onCreateDrawableState(extraSpace > + 2); > if (isFried()) { > mergeDrawableStates(drawableState, FRIED_STATE_SET); > } > if (isBaked()) { > mergeDrawableStates(drawableState, BAKED_STATE_SET); > } > return drawableState; > } > > Once this is done, you should be able to use these in > ColorStateListDrawable, but you should use your app's namespace to use > these new states: > > <selector xmlns:android="http://schemas.android.com/apk/res/android" > xmlns:app="http://schemas.android.com/apk/res/<my_app_package>"> > <item android:drawable="@drawable/item_baked" state_baked="true" > state_fried="false" /> > <item android:drawable="@drawable/item_fried" state_baked="false" > state_fried="true" /> > <item android:drawable="@drawable/item_overcooked" state_baked="true" > state_fried="true" /> > <item android:drawable="@drawable/item_raw" state_baked="false" > state_fried="false" /> > </selector> > > > On Mon, Mar 31, 2008 at 9:48 AM, Ted Hopp <t...@zigzagworld.com<javascript:>> > wrote: > >> >> With some searching I've found several examples and explanations of >> customizing the look of a component based on the drawing states. But I >> haven't found anything about defining custom drawing states. For >> instance, suppose I have a component that maintains states that I >> might call "baked" and "fried" and I want it's appearance to track >> these states. So I'm imagining this drawable: >> >> <selector xmlns:android="http://schemas.android.com/apk/res/android"> >> <item android:drawable="@drawable/item_baked" state_baked="true" >> state_fried="false" /> >> <item android:drawable="@drawable/item_fried" state_baked="false" >> state_fried="true" /> >> <item android:drawable="@drawable/item_overcooked" state_baked="true" >> state_fried="true" /> >> <item android:drawable="@drawable/item_raw" state_baked="false" >> state_fried="false" /> >> </selector> >> >> Is this possible? I see that it is possible (with setState, >> mergeDrawableStates, etc.) to have custom state data, but I don't see >> how to put this to use. I can't figure out from the documentation >> whether it is even possible to define custom item state attributes in >> xml, much less how to do it and link them to the state vector. (I'm >> assuming that if this is possible, I could also mix custom attributes >> with standard ones like android:state_pressed.) A pointer to an >> example or two would be very helpful. >> >> Thanks. >> >> > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en