Bump On Jan 20, 1:40 pm, Nick <[email protected]> wrote: > I have searched around and I found good examples on adding custom > boolean states to a drawable but I am having issues adding a state > that is a list of enums. I am sure most of my problems lie within the > onCreateDrawableState call so I have a few questions. > > 1) Is the extraSpace param to onCreateDrawableState the number of > additional int[] that I would like to add or the size of the int[]? So > since I am just adding MODE I should just be increasing extraSpace by > 1 and not by MODE.length? > 2) I don't quite understand the mergeDrawableStates method. If I put > it in an IF statement I am getting what I expect, but I think I am > just getting lucky. I don't feel my IF check is correct. My initial > assumption was that I don't do a check and always call > mergeDrawableStates but then the drawable never changes. I have seen > where if the extra state is a boolean then the if statement checks for > that. I don't quite know what to do about an enum. > 3) When I do get it working, my ic_button_a is drawn correctly. > However every time when ic_button_c is getting drawn, ic_button_c is > resized and stretch to fit the View which includes a background > graphic that is larger than ic_button_c. ic_button_a and ic_button_a > are the same size. > > I have my custom view: > <com.pkg.CustomView > android:background="@drawable/ic_button_bg" > android:src="@drawable/ic_button" > android:layout_height="wrap_content" > android:layout_width="wrap_content"/> > > which extends ImageButton.: > public class CustomView extends ImageButton { > > private static final int[] MODE = {R.attr.mode}; > private int mMode = 1; > > @Override > public int[] onCreateDrawableState(int extraSpace) { > final int[] drawableState = > super.onCreateDrawableState(extraSpace + 1); > if (mMode != 0) { > mergeDrawableStates(drawableState, MODE); > } > return drawableState; > } > > public void setMode(int mode) { > mMode = mode; > refreshDrawableState(); > } > > } > > I am defining my modes here: > <resources> > <declare-styleable name="CaptureButton"> > <attr name="mode"> > <enum name="a" value="0" /> > <enum name="b" value="1" /> > <enum name="c" value="2" /> > <enum name="d" value="3" /> > <enum name="e" value="4" /> > <enum name="f" value="5" /> > <enum name="g" value="6" /> > <enum name="h" value="7" /> > </attr> > </declare-styleable> > </resources> > > My @drawable/ic_button is: > <selector xmlns:android="http://schemas.android.com/apk/res/android" > xmlns:app="http://schemas.android.com/apk/res/com.pkg"> > <item app:mode="c" android:drawable="@drawable/ic_button_c" /> > > <item android:drawable="@drawable/ic_button_a" /> > </selector>
-- 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

