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

Reply via email to