I have a MapView
with an action bar powered by ActionBarSherlock. The action bar is both split (on "narrow" screens) and overlayed / semi-transparent (android:windowActionBarOverlay is true). More or less like the Google Maps app.
Now I would like to push views on top of the map, at the bottom of the screen still keeping it above the bottom action bar. My problem here is that I don't know the height of the bottom action bar. Frankly, I can't even find a way to know if it's drawn or not. getHeight()
seems to return the height of the top action bar (or perhaps it's the height of both of them but I still don't know if the bottom action bar exists or not.
Please, tell me this information is right in front of my eyes!
The bottom bar should match the height of the regular action bar. Thus, using
?android:attr/actionBarSize
(or in ActionBarSherlock's case?attr/actionBarSize
) for the height in XML orgetResources().getDimensionPixelSize(R.attr.actionBarSize)
in code should suffice.edit:
Er, on a second read of your question it seems more focused on also determining whether or not the split action bar exists.
You may want to read these answers and the follow-up comments by Adam Powell, action bar guru:
I ran into the same problem. On phone devices in portrait mode the actionbar is split. So menu-items are in the top actionbar and the tabs in a second actionbar (tabbar) below. I just did not find any possible way to determine the height of the actionbar: to see what space is left on the screen before building my screen.
So I did an assumption:
So I distinguish the different screensizes and created a bool resource
In the code I access the value like this:
To get the actionbar height in the onCreateView() method:
And double the height if the actionbar is split:
It is not an ideal solution, but for me this works.
If you are using ActionBarSherlock you can look for the boolean value abs__split_action_bar_is_narrow
Just create some static method where you can do
you need to use the ResourcesCompat (from actionbarsherlock) class because pre 3.2 cant read folders with metrics (like values-sw480)