* commit 'f6fcea602750bbc0eb7d394f4daf3848ffaaed7d': Fix issue #8325007: EyeEm app crashes on launch- NPE at...
This commit is contained in:
@@ -73,10 +73,6 @@ public class ActionBarOverlayLayout extends ViewGroup {
|
||||
ta.recycle();
|
||||
}
|
||||
|
||||
public void setOverlayMode(boolean mode) {
|
||||
mOverlayMode = mode;
|
||||
}
|
||||
|
||||
public void setActionBar(ActionBarImpl impl, boolean overlayMode) {
|
||||
mActionBar = impl;
|
||||
mOverlayMode = overlayMode;
|
||||
@@ -177,7 +173,9 @@ public class ActionBarOverlayLayout extends ViewGroup {
|
||||
|
||||
// The top and bottom action bars are always within the content area.
|
||||
boolean changed = applyInsets(mActionBarTop, insets, true, true, false, true);
|
||||
changed |= applyInsets(mActionBarBottom, insets, true, false, true, true);
|
||||
if (mActionBarBottom != null) {
|
||||
changed |= applyInsets(mActionBarBottom, insets, true, false, true, true);
|
||||
}
|
||||
|
||||
mBaseInnerInsets.set(insets);
|
||||
computeFitSystemWindows(mBaseInnerInsets, mBaseContentInsets);
|
||||
@@ -219,6 +217,8 @@ public class ActionBarOverlayLayout extends ViewGroup {
|
||||
|
||||
@Override
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
pullChildren();
|
||||
|
||||
int maxHeight = 0;
|
||||
int maxWidth = 0;
|
||||
int childState = 0;
|
||||
@@ -234,13 +234,16 @@ public class ActionBarOverlayLayout extends ViewGroup {
|
||||
mActionBarTop.getMeasuredHeight() + lp.topMargin + lp.bottomMargin);
|
||||
childState = combineMeasuredStates(childState, mActionBarTop.getMeasuredState());
|
||||
|
||||
measureChildWithMargins(mActionBarBottom, widthMeasureSpec, 0, heightMeasureSpec, 0);
|
||||
lp = (LayoutParams) mActionBarBottom.getLayoutParams();
|
||||
maxWidth = Math.max(maxWidth,
|
||||
mActionBarBottom.getMeasuredWidth() + lp.leftMargin + lp.rightMargin);
|
||||
maxHeight = Math.max(maxHeight,
|
||||
mActionBarBottom.getMeasuredHeight() + lp.topMargin + lp.bottomMargin);
|
||||
childState = combineMeasuredStates(childState, mActionBarBottom.getMeasuredState());
|
||||
// xlarge screen layout doesn't have bottom action bar.
|
||||
if (mActionBarBottom != null) {
|
||||
measureChildWithMargins(mActionBarBottom, widthMeasureSpec, 0, heightMeasureSpec, 0);
|
||||
lp = (LayoutParams) mActionBarBottom.getLayoutParams();
|
||||
maxWidth = Math.max(maxWidth,
|
||||
mActionBarBottom.getMeasuredWidth() + lp.leftMargin + lp.rightMargin);
|
||||
maxHeight = Math.max(maxHeight,
|
||||
mActionBarBottom.getMeasuredHeight() + lp.topMargin + lp.bottomMargin);
|
||||
childState = combineMeasuredStates(childState, mActionBarBottom.getMeasuredState());
|
||||
}
|
||||
|
||||
final int vis = getWindowSystemUiVisibility();
|
||||
final boolean stable = (vis & SYSTEM_UI_FLAG_LAYOUT_STABLE) != 0;
|
||||
@@ -264,10 +267,12 @@ public class ActionBarOverlayLayout extends ViewGroup {
|
||||
|
||||
if (mActionView.isSplitActionBar()) {
|
||||
// If action bar is split, adjust bottom insets for it.
|
||||
if (stable) {
|
||||
bottomInset = mActionBarHeight;
|
||||
} else {
|
||||
bottomInset = mActionBarBottom.getMeasuredHeight();
|
||||
if (mActionBarBottom != null) {
|
||||
if (stable) {
|
||||
bottomInset = mActionBarHeight;
|
||||
} else {
|
||||
bottomInset = mActionBarBottom.getMeasuredHeight();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,33 +15,43 @@
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is an optimized layout for a screen with the Action Bar enabled.
|
||||
This is an optimized layout for a screen with
|
||||
the Action Bar enabled overlaying application content.
|
||||
-->
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical"
|
||||
android:fitsSystemWindows="true"
|
||||
<com.android.internal.widget.ActionBarOverlayLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/action_bar_overlay_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:splitMotionEvents="false">
|
||||
<com.android.internal.widget.ActionBarContainer android:id="@+id/action_bar_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="?android:attr/actionBarStyle">
|
||||
<com.android.internal.widget.ActionBarView
|
||||
android:id="@+id/action_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="?android:attr/actionBarStyle" />
|
||||
<com.android.internal.widget.ActionBarContextView
|
||||
android:id="@+id/action_context_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
style="?android:attr/actionModeStyle" />
|
||||
</com.android.internal.widget.ActionBarContainer>
|
||||
<FrameLayout android:id="@android:id/content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dip"
|
||||
android:layout_weight="1"
|
||||
android:foregroundGravity="fill_horizontal|top"
|
||||
android:foreground="?android:attr/windowContentOverlay" />
|
||||
</LinearLayout>
|
||||
android:layout_height="match_parent" />
|
||||
<LinearLayout android:id="@+id/top_action_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<com.android.internal.widget.ActionBarContainer android:id="@+id/action_bar_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
style="?android:attr/actionBarStyle"
|
||||
android:gravity="top">
|
||||
<com.android.internal.widget.ActionBarView
|
||||
android:id="@+id/action_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="?android:attr/actionBarStyle" />
|
||||
<com.android.internal.widget.ActionBarContextView
|
||||
android:id="@+id/action_context_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
style="?android:attr/actionModeStyle" />
|
||||
</com.android.internal.widget.ActionBarContainer>
|
||||
<ImageView android:src="?android:attr/windowContentOverlay"
|
||||
android:scaleType="fitXY"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
</com.android.internal.widget.ActionBarOverlayLayout>
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2010 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is an optimized layout for a screen with
|
||||
the Action Bar enabled overlaying application content.
|
||||
-->
|
||||
|
||||
<com.android.internal.widget.ActionBarOverlayLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/action_bar_overlay_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:splitMotionEvents="false">
|
||||
<FrameLayout android:id="@android:id/content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
<LinearLayout android:id="@+id/top_action_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="top">
|
||||
<com.android.internal.widget.ActionBarContainer android:id="@+id/action_bar_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
style="?android:attr/actionBarStyle"
|
||||
android:gravity="top">
|
||||
<com.android.internal.widget.ActionBarView
|
||||
android:id="@+id/action_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="?android:attr/actionBarStyle" />
|
||||
<com.android.internal.widget.ActionBarContextView
|
||||
android:id="@+id/action_context_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
style="?android:attr/actionModeStyle" />
|
||||
</com.android.internal.widget.ActionBarContainer>
|
||||
<ImageView android:src="?android:attr/windowContentOverlay"
|
||||
android:scaleType="fitXY"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
</com.android.internal.widget.ActionBarOverlayLayout>
|
||||
@@ -1363,7 +1363,6 @@
|
||||
<java-symbol type="layout" name="keyguard_account_view" />
|
||||
<java-symbol type="layout" name="recent_apps_dialog" />
|
||||
<java-symbol type="layout" name="screen_action_bar" />
|
||||
<java-symbol type="layout" name="screen_action_bar_overlay" />
|
||||
<java-symbol type="layout" name="screen_custom_title" />
|
||||
<java-symbol type="layout" name="screen_progress" />
|
||||
<java-symbol type="layout" name="screen_simple" />
|
||||
|
||||
Reference in New Issue
Block a user