Android ShareActionProvider DarkActionBar Fix
With the beta of the Droidcon NL 2013 app Quirijn Groot Bluemink posted a screenshot which showed a small problem;
The menu provided by ShareActionProvider
as part of the Theme.AppCompat.Light.DarkActionBar
has black text on a
dark grey background.
The problem is due to the layout for each item in the menu defined in abc_activity_chooser_view_list_item.xml
. The
TextView in the layout uses ?attr/textAppearanceLargePopupMenu
, which, when you follow the references all the way
down to TextAppearance.AppCompat.Base.Widget.PopupMenu.Large
has the definition;
?android:attr/textColorPrimaryDisableOnly
In the Light themes textColorPrimaryDisableOnly
ends up, after a few references, being defined as;
#ff000000
which is where the black text comes from.
Did I fix the problem? Yes. Am I proud of the fix? No. My focus was on getting the application complete and working, and in order to do that the most time-efficient route was to import all the source code and resources for the appcompat library into the project and alter the TextView in abc_activity_chooser_view_list_item.xml to use a local style with the following definition;
<style name="TextAppearance.ShareList"
parent="TextAppearance.AppCompat.Widget.PopupMenu.Large">
<item name="android:textColor">@android:color/white</item>
<item name="android:textSize">18sp</item>
</style>
I can only hope that Google will get one of their legion of engineers to create something a bit more manageable in the next release of the support libraries.