Try adding an onclicklistener and invoke refreshDrawableState from performClick.
On Tuesday, November 6, 2012 1:29:06 PM UTC+2, Mustafa Ali wrote:
-- 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 <t...@zigzagworld.com> 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+unsubscribe@googlegroups.com
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 android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
No comments:
Post a Comment