Actionbarsherlock switch Actionbar Overlay Mode programmatic
actionbarsherlock, android, android-layout
Solution
Edit: Sadly it doesnt work for Actionbarsherlock and a ListFragment from the Compatibility Package. Top Margin is added to the Bottom Margin for some reason. Left and Right Margin working fine inside the LayoutListener.
Found a solution for this Problem in an Android Developer Example
// Attach a GlobalLayoutListener so that we get a callback when the layout
// has finished drawing. This is necessary so that we can apply top-margin
// to the ListView in order to dodge the ActionBar. Ordinarily, that's not
// necessary, but we've set the ActionBar to "overlay" mode using our theme,
// so the layout does not account for the action bar position on its own.
ViewTreeObserver observer = getListView().getViewTreeObserver();
observer.addOnGlobalLayoutListener(layoutListener);
// Because the fragment doesn't have a reliable callback to notify us when
// the activity's layout is completely drawn, this OnGlobalLayoutListener provides
// the necessary callback so we can add top-margin to the ListView in order to dodge
// the ActionBar. Which is necessary because the ActionBar is in overlay mode, meaning
// that it will ordinarily sit on top of the activity layout as a top layer and
// the ActionBar height can vary. Specifically, when on a small/normal size screen,
// the action bar tabs appear in a second row, making the action bar twice as tall.
ViewTreeObserver.OnGlobalLayoutListener layoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int barHeight = getActivity().getActionBar().getHeight();
ListView listView = getListView();
FrameLayout.LayoutParams params = (LayoutParams) listView.getLayoutParams();
// The list view top-margin should always match the action bar height
if (params.topMargin != barHeight) {
params.topMargin = barHeight;
listView.setLayoutParams(params);
}
// The action bar doesn't update its height when hidden, so make top-margin zero
if (!getActivity().getActionBar().isShowing()) {
params.topMargin = 0;
listView.setLayoutParams(params);
}
}
};
Problem
i use Actionbarsherlock for my App and i like to switch the Actionbar Overlay Mode in my Code. I have 2 Fragments (one is a Mapview where i want a translucent Actionbar) the other is a ListFragment where a solid Actionbar is needed. i tryed ``` requestWindowFeature((int) Window.FEATURE_ACTION_BAR & ~Window.FEATURE_ACTION_BAR_OVERLAY); ``` problem with this is that requesting Features only works before content is added. i using this style to accomplish the transparent Actionbar ``` <style name="TransparentActionbar" parent="@style/Theme.Sherlock" xmlns:android="http://schemas.android.com/apk/res/android"> <item name="windowActionBarOverlay">true</item> <item name="windowActionModeOverlay">true</item> <item name="abBackground">#96000000</item> <item name="abDivider">@null</item> </style> ``` is there a way to set ``` <item name="windowActionBarOverlay">true</item> <item name="windowActionModeOverlay">true</item> ``` to false inside the Activity/Fragment?