Hi Kostya...

the client already rejected my previous approach which involved inspecting 
a drawable.

I've finally given them the option of either using ActionBarSherlock and 
forcing the use of the overflow menu or developing some custom icons that 
will work with both a white or black option menu background.  I mocked up 
some samples today using their existing custom icon on top of a white 
rounded rectangle and they actually look quite good.

Thanks very much for the help and advice though - much appreciated.

Nick



On Friday, August 3, 2012 6:26:10 PM UTC-4, Kostya Vasilyev wrote:
>
>
>
> 2012/8/3 Spiral123 
>
>> OK...my second attempt to find the device value of 
>> textColorPrimaryDisableOnly:
>>
>> [snip] 
>  
>
>>  My attempt at reflection didn't seem to work either:
>>>
>>>
>> Class myClass = Class.forName("android.R$styleable");
>>>
>>> int mTextColor = 
>>>> myClass.getField("Theme_textColorPrimaryInverse").getInt(myClass);
>>>
>>>
>>>>
> You keep trying to get the value of textColorPrimaryDisableOnly from the 
> current theme... which mixes up cause and effect (source and target in a 
> reference).
>
> But that's irrelevant, because:
>
> I did a bit of checking and found that "style 
> name="Widget.TextView.PopupMenu"" is really just for popup menus, which use 
> a white background even on 2.3 (where the option menu uses a black 
> background... in the stock platform).
>
> The option menu gets its values from a style that's not exposed in the 
> SDK, and whose resource Id is thus not guaranteed to be the same, even if 
> you used it directly.
>  
>
>>  
>> Looking for the background 9-patch was no more successful - I couldn't 
>> find where menu_background_fill_parent_width.9.png is stored.
>>
>
> It's referenced from the theme as an attribute, called 
> "panelFullBackground", and publicly available since API 1.
>
> In XML, you'd write something like:
>
> <ImageView ... android:src="?android:attr/panelFullBackground" ... />
>
> In code, use something like this:
>
> TypedArray a = obtainStyledAttributes(new int[] { 
> android.R.attr.panelFullBackground });
>  Drawable d = a.getDrawable(0);
> a.recycle();
>
> And to verify, use something like this:
>
>
>   ImageView iv = (ImageView) findViewById(R.id.test_menu_background);
> iv.setImageDrawable(d);
>
> The images I'm getting (2.2 and 2.3 emulators) are pure white / pure black 
> with slim borders, so it should be really easy to tell them apart.
>
> -- K
>
>

-- 
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