Try adding an onclicklistener and invoke refreshDrawableState from 
performClick.

On Tuesday, November 6, 2012 1:29:06 PM UTC+2, Mustafa Ali wrote:
>
> 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 <[email protected]> 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 [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 unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to