Saturday, July 16, 2011

[android-developers] ActionBar/Mode Style Regressions with SDK 12r2 and 13r1

I develop a library which attempts to allow for the use of the action bar design pattern on pre-3.0 versions of Android using the 3.0+ API via a support method (much like the compat library on which it is based). In order to provide the ability to use a single theme that can be applied across both the native and custom action bar widget implementations, I rely on duplicating all of the action bar and action mode-related theme attributes to non-android prefixed versions. This will let the custom implementation refer to them directly (e.g., android:layout_height="?actionBarSize") and the styles in values-v11/ to map them back to their native theme attributes (e.g., <item name="android:actionBarSize">?actionBarSize</item>).

With the introduction of the 12r2 and 13r1 SDK it would seem a few of the theme attributes have changed as well as the visibility and name of other styles has changed completely (as in the old versions are gone). Namely,
  • Attribute: android:actionModePopupWindowStyle
  • Attribute: android:actionModeStyle
  • Style: Widget.Holo.ActionBarView_TabBar
  • Style: Widget.Holo.ActionBarView_TabView
  • Style: Widget.Holo.ActionBarView_TabText
  • Style: Widget.Holo.Spinner.DropDown.ActionBar
  • Style: Widget.Holo.PopupWindow.ActionMode
The result of these changes is that applications which implement my library no longer display any style for list or tab navigation. This is a very serious regression in the eyes of other developers who have chosen to use my library.

The API differences report for 13r1 notes that tab-related styles have been added in form Widget.Holo.ActionBar.Tab___. Does this mean that the Widget.Holo.ActionBarView_Tab___ styles were never meant to be consumed publicly in in 3.0r1 and 3.1r1? If this is the case, why then were they featured on the Android blog? There is currently no API differences report for 12r2.

In poking around the themes.xml included with the 13r1 SDK the two attributes listed above are included but reference to them will always give you a compile error. Even switching my build platform to 11r1 (the folder contents of which has not been updated since February 22nd) produces this error.

For a demonstration of this, you can look at the aforementioned styled sample which has been compiled using my library:

QR/Link:

Note that the tabs no longer get touch events when their text is clicked on directly. If you change the navigation mode to list you'll see that the dropdown no longer operates as expected and reverts to a modal list dialog.

I guess my question is why hasn't the change in these attributes and styles been documented in the API differences report? Why are attributes that seem to be defined in the platforms themes.xml (e.g., android:actionModeStyle) and styles.xml (e.g., Widget.Holo.Light.Spinner.DropDown.ActionBar) producing compile errors?

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

No comments:

Post a Comment