diff options
author | Adam Powell <adamp@google.com> | 2011-05-17 12:13:13 -0700 |
---|---|---|
committer | Adam Powell <adamp@google.com> | 2011-05-17 12:14:17 -0700 |
commit | 1b4a1628f3c6deb5f3ce9027c4e5aaf98dab4d75 (patch) | |
tree | 5dea884633337d0b78f9ec59780dd1733a6fcbf9 /core | |
parent | a7f52d4665967b4331d38408ba81af37ec589cb4 (diff) | |
download | frameworks_base-1b4a1628f3c6deb5f3ce9027c4e5aaf98dab4d75.zip frameworks_base-1b4a1628f3c6deb5f3ce9027c4e5aaf98dab4d75.tar.gz frameworks_base-1b4a1628f3c6deb5f3ce9027c4e5aaf98dab4d75.tar.bz2 |
Prevent cases of bogus action bar measurement.
Change-Id: I92d3bc41aa82835e1aa23f208ab61e943266f186
Diffstat (limited to 'core')
-rw-r--r-- | core/java/com/android/internal/widget/ActionBarContextView.java | 2 | ||||
-rw-r--r-- | core/java/com/android/internal/widget/ActionBarView.java | 29 |
2 files changed, 16 insertions, 15 deletions
diff --git a/core/java/com/android/internal/widget/ActionBarContextView.java b/core/java/com/android/internal/widget/ActionBarContextView.java index 71af115..f762265 100644 --- a/core/java/com/android/internal/widget/ActionBarContextView.java +++ b/core/java/com/android/internal/widget/ActionBarContextView.java @@ -410,7 +410,7 @@ public class ActionBarContextView extends ViewGroup implements AnimatorListener availableWidth -= child.getMeasuredWidth(); availableWidth -= spacing; - return availableWidth; + return Math.max(0, availableWidth); } private int positionChild(View child, int x, int y, int contentHeight) { diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java index 81d02ee..cc51911 100644 --- a/core/java/com/android/internal/widget/ActionBarView.java +++ b/core/java/com/android/internal/widget/ActionBarView.java @@ -635,48 +635,48 @@ public class ActionBarView extends ViewGroup { mHomeLayout.measure(MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); final int homeWidth = mHomeLayout.getMeasuredWidth(); - availableWidth -= homeWidth; - leftOfCenter -= homeWidth; + availableWidth = Math.max(0, availableWidth - homeWidth); + leftOfCenter = Math.max(0, availableWidth - homeWidth); } if (mMenuView != null) { availableWidth = measureChildView(mMenuView, availableWidth, childSpecHeight, 0); - rightOfCenter -= mMenuView.getMeasuredWidth(); + rightOfCenter = Math.max(0, rightOfCenter - mMenuView.getMeasuredWidth()); } boolean showTitle = mTitleLayout != null && mTitleLayout.getVisibility() != GONE && (mDisplayOptions & ActionBar.DISPLAY_SHOW_TITLE) != 0; if (showTitle) { availableWidth = measureChildView(mTitleLayout, availableWidth, childSpecHeight, 0); - leftOfCenter -= mTitleLayout.getMeasuredWidth(); + leftOfCenter = Math.max(0, leftOfCenter - mTitleLayout.getMeasuredWidth()); } switch (mNavigationMode) { case ActionBar.NAVIGATION_MODE_LIST: if (mListNavLayout != null) { final int itemPaddingSize = showTitle ? mItemPadding * 2 : mItemPadding; - availableWidth -= itemPaddingSize; - leftOfCenter -= itemPaddingSize; + availableWidth = Math.max(0, availableWidth - itemPaddingSize); + leftOfCenter = Math.max(0, leftOfCenter - itemPaddingSize); mListNavLayout.measure( MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); final int listNavWidth = mListNavLayout.getMeasuredWidth(); - availableWidth -= listNavWidth; - leftOfCenter -= listNavWidth; + availableWidth = Math.max(0, availableWidth - listNavWidth); + leftOfCenter = Math.max(0, leftOfCenter - listNavWidth); } break; case ActionBar.NAVIGATION_MODE_TABS: if (mTabScrollView != null) { final int itemPaddingSize = showTitle ? mItemPadding * 2 : mItemPadding; - availableWidth -= itemPaddingSize; - leftOfCenter -= itemPaddingSize; + availableWidth = Math.max(0, availableWidth - itemPaddingSize); + leftOfCenter = Math.max(0, leftOfCenter - itemPaddingSize); mTabScrollView.measure( MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); final int tabWidth = mTabScrollView.getMeasuredWidth(); - availableWidth -= tabWidth; - leftOfCenter -= tabWidth; + availableWidth = Math.max(0, availableWidth - tabWidth); + leftOfCenter = Math.max(0, leftOfCenter - tabWidth); } break; } @@ -685,7 +685,8 @@ public class ActionBarView extends ViewGroup { mIndeterminateProgressView.getVisibility() != GONE) { availableWidth = measureChildView(mIndeterminateProgressView, availableWidth, childSpecHeight, 0); - rightOfCenter -= mIndeterminateProgressView.getMeasuredWidth(); + rightOfCenter = Math.max(0, + rightOfCenter - mIndeterminateProgressView.getMeasuredWidth()); } if ((mDisplayOptions & ActionBar.DISPLAY_SHOW_CUSTOM) != 0 && mCustomNavView != null) { @@ -764,7 +765,7 @@ public class ActionBarView extends ViewGroup { availableWidth -= child.getMeasuredWidth(); availableWidth -= spacing; - return availableWidth; + return Math.max(0, availableWidth); } @Override |