13a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn/* 23a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn * Copyright (C) 2012 The Android Open Source Project 33a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn * 43a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License"); 53a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn * you may not use this file except in compliance with the License. 63a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn * You may obtain a copy of the License at 73a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn * 83a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn * http://www.apache.org/licenses/LICENSE-2.0 93a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn * 103a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn * Unless required by applicable law or agreed to in writing, software 113a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS, 123a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn * See the License for the specific language governing permissions and 143a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn * limitations under the License. 153a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn */ 163a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 173a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackbornpackage com.android.internal.widget; 183a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 193a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackbornimport com.android.internal.app.ActionBarImpl; 203a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 213a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackbornimport android.content.Context; 223a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackbornimport android.content.res.TypedArray; 233a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackbornimport android.graphics.Rect; 243a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackbornimport android.util.AttributeSet; 25139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackbornimport android.util.Log; 263a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackbornimport android.view.View; 273a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackbornimport android.widget.FrameLayout; 283a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 293a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn/** 303a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn * Special layout for the containing of an overlay action bar (and its 313a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn * content) to correctly handle fitting system windows when the content 323a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn * has request that its layout ignore them. 333a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn */ 343a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackbornpublic class ActionBarOverlayLayout extends FrameLayout { 353a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn private int mActionBarHeight; 363a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn private ActionBarImpl mActionBar; 373a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn private int mWindowVisibility = View.VISIBLE; 383a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn private View mContent; 393a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn private View mActionBarTop; 403a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn private ActionBarContainer mContainerView; 413a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn private ActionBarView mActionView; 423a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn private View mActionBarBottom; 433a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn private int mLastSystemUiVisibility; 443a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn private final Rect mZeroRect = new Rect(0, 0, 0, 0); 453a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 463a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn static final int[] mActionBarSizeAttr = new int [] { 473a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn com.android.internal.R.attr.actionBarSize 483a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn }; 493a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 503a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn public ActionBarOverlayLayout(Context context) { 513a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn super(context); 523a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn init(context); 533a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 543a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 553a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn public ActionBarOverlayLayout(Context context, AttributeSet attrs) { 563a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn super(context, attrs); 573a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn init(context); 583a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 593a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 603a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn private void init(Context context) { 613a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn TypedArray ta = getContext().getTheme().obtainStyledAttributes(mActionBarSizeAttr); 623a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn mActionBarHeight = ta.getDimensionPixelSize(0, 0); 633a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn ta.recycle(); 643a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 653a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 663a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn public void setActionBar(ActionBarImpl impl) { 673a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn mActionBar = impl; 683a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn if (getWindowToken() != null) { 693a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn // This is being initialized after being added to a window; 703a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn // make sure to update all state now. 713a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn mActionBar.setWindowVisibility(mWindowVisibility); 723a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn if (mLastSystemUiVisibility != 0) { 733a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn int newVis = mLastSystemUiVisibility; 743a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn onWindowSystemUiVisibilityChanged(newVis); 753a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn requestFitSystemWindows(); 763a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 773a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 783a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 793a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 80139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn public void setShowingForActionMode(boolean showing) { 81139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn if (showing) { 82139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn // Here's a fun hack: if the status bar is currently being hidden, 83139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn // and the application has asked for stable content insets, then 84139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn // we will end up with the action mode action bar being shown 85139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn // without the status bar, but moved below where the status bar 86139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn // would be. Not nice. Trying to have this be positioned 87139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn // correctly is not easy (basically we need yet *another* content 88139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn // inset from the window manager to know where to put it), so 89139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn // instead we will just temporarily force the status bar to be shown. 90139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn if ((getWindowSystemUiVisibility() & (SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 91139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn | SYSTEM_UI_FLAG_LAYOUT_STABLE)) 92139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn == (SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | SYSTEM_UI_FLAG_LAYOUT_STABLE)) { 93139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn setDisabledSystemUiVisibility(SYSTEM_UI_FLAG_FULLSCREEN); 94139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn } 95139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn } else { 96139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn setDisabledSystemUiVisibility(0); 97139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn } 98139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn } 99139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn 1003a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn @Override 1013a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn public void onWindowSystemUiVisibilityChanged(int visible) { 1023a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn super.onWindowSystemUiVisibilityChanged(visible); 1033a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn pullChildren(); 1043a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn final int diff = mLastSystemUiVisibility ^ visible; 1053a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn mLastSystemUiVisibility = visible; 1063a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn final boolean barVisible = (visible&SYSTEM_UI_FLAG_FULLSCREEN) == 0; 107139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn final boolean wasVisible = mActionBar != null ? mActionBar.isSystemShowing() : true; 108139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn if (mActionBar != null) { 109139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn if (barVisible) mActionBar.showForSystem(); 110139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn else mActionBar.hideForSystem(); 111139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn } 112139e5aa1da51b27231ab36344cf2d0dafab23f1eDianne Hackborn if ((diff&SYSTEM_UI_FLAG_LAYOUT_STABLE) != 0) { 1133a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn if (mActionBar != null) { 1143a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn requestFitSystemWindows(); 1153a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 1163a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 1173a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 1183a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 1193a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn @Override 1203a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn protected void onWindowVisibilityChanged(int visibility) { 1213a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn super.onWindowVisibilityChanged(visibility); 1223a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn mWindowVisibility = visibility; 1233a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn if (mActionBar != null) { 1243a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn mActionBar.setWindowVisibility(visibility); 1253a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 1263a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 1273a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 1283a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn private boolean applyInsets(View view, Rect insets, boolean left, boolean top, 1293a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn boolean bottom, boolean right) { 1303a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn boolean changed = false; 1313a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams)view.getLayoutParams(); 1323a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn if (left && lp.leftMargin != insets.left) { 1333a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn changed = true; 1343a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn lp.leftMargin = insets.left; 1353a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 1363a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn if (top && lp.topMargin != insets.top) { 1373a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn changed = true; 1383a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn lp.topMargin = insets.top; 1393a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 1403a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn if (right && lp.rightMargin != insets.right) { 1413a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn changed = true; 1423a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn lp.rightMargin = insets.right; 1433a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 1443a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn if (bottom && lp.bottomMargin != insets.bottom) { 1453a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn changed = true; 1463a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn lp.bottomMargin = insets.bottom; 1473a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 1483a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn return changed; 1493a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 1503a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 1513a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn @Override 1523a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn protected boolean fitSystemWindows(Rect insets) { 1533a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn pullChildren(); 1543a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 1553a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn final int vis = getWindowSystemUiVisibility(); 1563a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn final boolean stable = (vis & SYSTEM_UI_FLAG_LAYOUT_STABLE) != 0; 1573a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 1583a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn // The top and bottom action bars are always within the content area. 1593a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn boolean changed = applyInsets(mActionBarTop, insets, true, true, false, true); 160fe2b7ccca4c5fdaa0d77968b897bd789f4c87c30Dianne Hackborn if (mActionBarBottom != null) { 161fe2b7ccca4c5fdaa0d77968b897bd789f4c87c30Dianne Hackborn changed |= applyInsets(mActionBarBottom, insets, true, false, true, true); 162fe2b7ccca4c5fdaa0d77968b897bd789f4c87c30Dianne Hackborn } 1633a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 1643a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn // If the window has not requested system UI layout flags, we need to 1653a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn // make sure its content is not being covered by system UI... though it 1663a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn // will still be covered by the action bar since they have requested it to 1673a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn // overlay. 1683a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn if ((vis & SYSTEM_UI_LAYOUT_FLAGS) == 0) { 1693a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn changed |= applyInsets(mContent, insets, true, true, true, true); 1703a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn // The insets are now consumed. 1713a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn insets.set(0, 0, 0, 0); 1723a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } else { 1733a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn changed |= applyInsets(mContent, mZeroRect, true, true, true, true); 1743a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 1753a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 1763a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 1773a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn if (stable || mActionBarTop.getVisibility() == VISIBLE) { 1783a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn // The action bar creates additional insets for its content to use. 1793a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn insets.top += mActionBarHeight; 1803a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 1813a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 1823a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn if (mActionBar != null && mActionBar.hasNonEmbeddedTabs()) { 1833a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn View tabs = mContainerView.getTabContainer(); 1843a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn if (stable || (tabs != null && tabs.getVisibility() == VISIBLE)) { 1853a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn // If tabs are not embedded, adjust insets to account for them. 1863a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn insets.top += mActionBarHeight; 1873a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 1883a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 1893a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 1903a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn if (mActionView.isSplitActionBar()) { 1913a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn if (stable || (mActionBarBottom != null 1923a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn && mActionBarBottom.getVisibility() == VISIBLE)) { 1933a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn // If action bar is split, adjust buttom insets for it. 1943a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn insets.bottom += mActionBarHeight; 1953a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 1963a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 1973a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 1983a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn if (changed) { 1993a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn requestLayout(); 2003a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 2013a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 2023a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn return super.fitSystemWindows(insets); 2033a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 2043a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn 2053a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn void pullChildren() { 2063a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn if (mContent == null) { 2073a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn mContent = findViewById(com.android.internal.R.id.content); 2083a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn mActionBarTop = findViewById(com.android.internal.R.id.top_action_bar); 2093a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn mContainerView = (ActionBarContainer)findViewById( 2103a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn com.android.internal.R.id.action_bar_container); 2113a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn mActionView = (ActionBarView) findViewById(com.android.internal.R.id.action_bar); 2123a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn mActionBarBottom = findViewById(com.android.internal.R.id.split_action_bar); 2133a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 2143a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn } 2153a3a6cfd8ec12208ca75c0d0d871d19d76c34194Dianne Hackborn} 216