ActionBarOverlayLayout.java revision 20ac724a3a836bfd362c911f7dc55a61c02b4d44
1bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell/*
2bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Copyright (C) 2012 The Android Open Source Project
3bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell *
4bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Licensed under the Apache License, Version 2.0 (the "License");
5bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * you may not use this file except in compliance with the License.
6bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * You may obtain a copy of the License at
7bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell *
8bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell *      http://www.apache.org/licenses/LICENSE-2.0
9bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell *
10bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Unless required by applicable law or agreed to in writing, software
11bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * distributed under the License is distributed on an "AS IS" BASIS,
12bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * See the License for the specific language governing permissions and
14bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * limitations under the License.
15bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell */
16bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell
17bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellpackage android.support.appcompat.widget;
18bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell
19bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.content.Context;
20bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.content.res.TypedArray;
21bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.graphics.Rect;
22bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.support.appcompat.R;
23bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.support.appcompat.app.ActionBar;
24bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.support.appcompat.app.ActionBarImplCompat;
25bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.util.AttributeSet;
26bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.view.View;
27bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.widget.FrameLayout;
28bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell
29bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell/**
3020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Special layout for the containing of an overlay action bar (and its content) to correctly handle
3120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * fitting system windows when the content has request that its layout ignore them.
32bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell */
33bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellpublic class ActionBarOverlayLayout extends FrameLayout {
3420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
3520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    private int mActionBarHeight;
3620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    private ActionBar mActionBar;
3720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    // TODO(trevorjohns): Should this be ActionBarImplCompat?
3820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    private int mWindowVisibility = View.VISIBLE;
3920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    private View mContent;
4020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    private View mActionBarTop;
4120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    private ActionBarContainer mContainerView;
4220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    private ActionBarView mActionView;
4320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    private View mActionBarBottom;
4420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    private int mLastSystemUiVisibility;
4520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    private final Rect mZeroRect = new Rect(0, 0, 0, 0);
4620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
4720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    static final int[] mActionBarSizeAttr = new int[]{
4820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            android.support.appcompat.R.attr.actionBarSize
4920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    };
5020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
5120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    public ActionBarOverlayLayout(Context context) {
5220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        super(context);
5320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        init(context);
5420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    }
5520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
5620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    public ActionBarOverlayLayout(Context context, AttributeSet attrs) {
5720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        super(context, attrs);
5820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        init(context);
59bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell    }
6020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
6120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    private void init(Context context) {
6220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        TypedArray ta = getContext().getTheme().obtainStyledAttributes(mActionBarSizeAttr);
6320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        mActionBarHeight = ta.getDimensionPixelSize(0, 0);
6420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        ta.recycle();
65bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell    }
6620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
6720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    public void setActionBar(ActionBarImplCompat impl) {
6820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        mActionBar = impl;
6920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        if (getWindowToken() != null) {
7020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            // This is being initialized after being added to a window;
7120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            // make sure to update all state now.
7220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            // TODO(trevorjohns): Non-public method. Probably okay, but test. (Also below.)
7320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            // TOOD(trevorjohns): Might make sense to strip out visibility handling in general.
7420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            // mActionBar.setWindowVisibility(mWindowVisibility);
7520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            if (mLastSystemUiVisibility != 0) {
7620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns                int newVis = mLastSystemUiVisibility;
7720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns                // Removed: Not relevant on older devices
7820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns                // onWindowSystemUiVisibilityChanged(newVis);
7920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns                // requestFitSystemWindows();
8020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            }
8120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        }
82bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell    }
8320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
8420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    // Removed: Not relevant for older devices
8520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    /*public void setShowingForActionMode(boolean showing) {
8620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        if (showing) {
8720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            // Here's a fun hack: if the status bar is currently being hidden,
8820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            // and the application has asked for stable content insets, then
8920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            // we will end up with the action mode action bar being shown
9020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            // without the status bar, but moved below where the status bar
9120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            // would be.  Not nice.  Trying to have this be positioned
9220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            // correctly is not easy (basically we need yet *another* content
9320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            // inset from the window manager to know where to put it), so
9420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            // instead we will just temporarily force the status bar to be shown.
9520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            if ((getWindowSystemUiVisibility() & (SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
9620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns                    | SYSTEM_UI_FLAG_LAYOUT_STABLE))
9720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns                    == (SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | SYSTEM_UI_FLAG_LAYOUT_STABLE)) {
9820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns                setDisabledSystemUiVisibility(SYSTEM_UI_FLAG_FULLSCREEN);
9920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            }
10020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        } else {
10120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            setDisabledSystemUiVisibility(0);
10220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        }
10320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    }*/
10420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
10520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    // Removed: Not relevant for older devices
10620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    /*@Override
10720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    public void onWindowSystemUiVisibilityChanged(int visible) {
10820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        super.onWindowSystemUiVisibilityChanged(visible);
10920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        pullChildren();
11020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        final int diff = mLastSystemUiVisibility ^ visible;
11120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        mLastSystemUiVisibility = visible;
11220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        final boolean barVisible = (visible&SYSTEM_UI_FLAG_FULLSCREEN) == 0;
11320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        final boolean wasVisible = mActionBar != null ? mActionBar.isSystemShowing() : true;
11420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        if (mActionBar != null) {
11520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            if (barVisible) mActionBar.showForSystem();
11620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            else mActionBar.hideForSystem();
11720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        }
11820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        if ((diff&SYSTEM_UI_FLAG_LAYOUT_STABLE) != 0) {
11920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            if (mActionBar != null) {
12020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns                requestFitSystemWindows();
12120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            }
12220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        }
12320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    }*/
12420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
12520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    @Override
12620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    protected void onWindowVisibilityChanged(int visibility) {
12720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        super.onWindowVisibilityChanged(visibility);
12820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        mWindowVisibility = visibility;
12920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        // See above.
13020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        //if (mActionBar != null) {
13120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        //  mActionBar.setWindowVisibility(visibility);
13220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        //}
133bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell    }
13420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
13520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    private boolean applyInsets(View view, Rect insets, boolean left, boolean top,
13620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            boolean bottom, boolean right) {
13720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        boolean changed = false;
13820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) view.getLayoutParams();
13920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        if (left && lp.leftMargin != insets.left) {
14020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            changed = true;
14120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            lp.leftMargin = insets.left;
14220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        }
14320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        if (top && lp.topMargin != insets.top) {
14420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            changed = true;
14520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            lp.topMargin = insets.top;
14620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        }
14720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        if (right && lp.rightMargin != insets.right) {
14820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            changed = true;
14920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            lp.rightMargin = insets.right;
15020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        }
15120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        if (bottom && lp.bottomMargin != insets.bottom) {
15220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            changed = true;
15320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            lp.bottomMargin = insets.bottom;
15420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        }
15520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        return changed;
156bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell    }
15720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
15820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    // Removed:
15920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    /*@Override
16020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    protected boolean fitSystemWindows(Rect insets) {
16120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        pullChildren();
16220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
16320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        final int vis = getWindowSystemUiVisibility();
16420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        final boolean stable = (vis & SYSTEM_UI_FLAG_LAYOUT_STABLE) != 0;
16520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
16620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        // The top and bottom action bars are always within the content area.
16720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        boolean changed = applyInsets(mActionBarTop, insets, true, true, false, true);
16820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        if (mActionBarBottom != null) {
16920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            changed |= applyInsets(mActionBarBottom, insets, true, false, true, true);
17020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        }
17120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
17220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        // If the window has not requested system UI layout flags, we need to
17320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        // make sure its content is not being covered by system UI...  though it
17420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        // will still be covered by the action bar since they have requested it to
17520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        // overlay.
17620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        if ((vis & SYSTEM_UI_LAYOUT_FLAGS) == 0) {
17720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            changed |= applyInsets(mContent, insets, true, true, true, true);
17820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            // The insets are now consumed.
17920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            insets.set(0, 0, 0, 0);
18020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        } else {
18120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            changed |= applyInsets(mContent, mZeroRect, true, true, true, true);
18220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        }
18320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
18420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
18520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        if (stable || mActionBarTop.getVisibility() == VISIBLE) {
18620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            // The action bar creates additional insets for its content to use.
18720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            insets.top += mActionBarHeight;
18820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        }
18920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
19020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        if (mActionBar != null && mActionBar.hasNonEmbeddedTabs()) {
19120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            View tabs = mContainerView.getTabContainer();
19220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            if (stable || (tabs != null && tabs.getVisibility() == VISIBLE)) {
19320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns                // If tabs are not embedded, adjust insets to account for them.
19420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns                insets.top += mActionBarHeight;
19520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            }
19620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        }
19720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
19820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        if (mActionView.isSplitActionBar()) {
19920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            if (stable || (mActionBarBottom != null
20020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns                    && mActionBarBottom.getVisibility() == VISIBLE)) {
20120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns                // If action bar is split, adjust buttom insets for it.
20220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns                insets.bottom += mActionBarHeight;
20320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            }
20420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        }
20520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
20620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        if (changed) {
20720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            requestLayout();
20820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        }
20920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
21020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        return super.fitSystemWindows(insets);
21120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    }*/
21220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
21320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    void pullChildren() {
21420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        if (mContent == null) {
21520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            mContent = findViewById(R.id.action_bar_activity_content);
21620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            mActionBarTop = findViewById(R.id.top_action_bar);
21720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            mContainerView = (ActionBarContainer) findViewById(
21820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns                    R.id.action_bar_container);
21920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            mActionView = (ActionBarView) findViewById(R.id.action_bar);
22020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns            mActionBarBottom = findViewById(R.id.split_action_bar);
22120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        }
222bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell    }
223bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell}
224