diff options
author | Adam Powell <adamp@google.com> | 2011-11-14 15:32:32 -0800 |
---|---|---|
committer | Adam Powell <adamp@google.com> | 2011-11-14 15:34:51 -0800 |
commit | 136a10a2b83c3de74857578937a1e81c3e81db73 (patch) | |
tree | 5b9ecc2664bacc6021e753d87c2f6714f9965ee5 /core | |
parent | 030bb99814157b6424c0bf290bd2ede217b5ba77 (diff) | |
download | frameworks_base-136a10a2b83c3de74857578937a1e81c3e81db73.zip frameworks_base-136a10a2b83c3de74857578937a1e81c3e81db73.tar.gz frameworks_base-136a10a2b83c3de74857578937a1e81c3e81db73.tar.bz2 |
Fix bug 5594320 - Overlay action bar decor layout causes two measure passes
The existing action bar overlay decor layouts hit a case in
RelativeLayout that causes two measure passes for the main content. As
this can be expensive, stick the bar and the content overlay into
their own sub-layout and switch things to use a FrameLayout at the top
level instead.
Be explicit about the layout_width/height on ActionBar-containing
decor layouts as the older decor layouts are.
Change-Id: I4330f0f25841dd8058b94a320f93bf67fb56bf17
Diffstat (limited to 'core')
-rw-r--r-- | core/res/res/layout/screen_action_bar.xml | 2 | ||||
-rw-r--r-- | core/res/res/layout/screen_action_bar_overlay.xml | 53 | ||||
-rw-r--r-- | core/res/res/layout/screen_simple.xml | 2 | ||||
-rw-r--r-- | core/res/res/layout/screen_simple_overlay_action_mode.xml | 2 |
4 files changed, 36 insertions, 23 deletions
diff --git a/core/res/res/layout/screen_action_bar.xml b/core/res/res/layout/screen_action_bar.xml index 2392618..b0f1bc5 100644 --- a/core/res/res/layout/screen_action_bar.xml +++ b/core/res/res/layout/screen_action_bar.xml @@ -19,6 +19,8 @@ This is an optimized layout for a screen with the Action Bar enabled. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" android:orientation="vertical" android:fitsSystemWindows="true"> <com.android.internal.widget.ActionBarContainer android:id="@+id/action_bar_container" diff --git a/core/res/res/layout/screen_action_bar_overlay.xml b/core/res/res/layout/screen_action_bar_overlay.xml index 19b861c..2a8c7c3 100644 --- a/core/res/res/layout/screen_action_bar_overlay.xml +++ b/core/res/res/layout/screen_action_bar_overlay.xml @@ -19,38 +19,45 @@ This is an optimized layout for a screen with the Action Bar enabled overlaying application content. --> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" android:fitsSystemWindows="true"> <FrameLayout android:id="@android:id/content" android:layout_width="match_parent" android:layout_height="match_parent" /> - <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" - 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" + <LinearLayout 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: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" - android:layout_below="@id/action_bar_container" /> + 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" + android:layout_below="@id/action_bar_container" /> + </LinearLayout> <com.android.internal.widget.ActionBarContainer android:id="@+id/split_action_bar" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_alignParentBottom="true" + android:layout_gravity="bottom" style="?android:attr/actionBarSplitStyle" android:visibility="gone" android:gravity="center"/> -</RelativeLayout> +</FrameLayout> diff --git a/core/res/res/layout/screen_simple.xml b/core/res/res/layout/screen_simple.xml index 87c29f6..c1914e7 100644 --- a/core/res/res/layout/screen_simple.xml +++ b/core/res/res/layout/screen_simple.xml @@ -22,6 +22,8 @@ enabled. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" android:fitsSystemWindows="true" android:orientation="vertical"> <ViewStub android:id="@+id/action_mode_bar_stub" diff --git a/core/res/res/layout/screen_simple_overlay_action_mode.xml b/core/res/res/layout/screen_simple_overlay_action_mode.xml index eb093e7..c790d10 100644 --- a/core/res/res/layout/screen_simple_overlay_action_mode.xml +++ b/core/res/res/layout/screen_simple_overlay_action_mode.xml @@ -21,6 +21,8 @@ enabled. --> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" android:fitsSystemWindows="true"> <FrameLayout android:id="@android:id/content" |