summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2011-05-17 12:13:13 -0700
committerAdam Powell <adamp@google.com>2011-05-17 12:14:17 -0700
commit1b4a1628f3c6deb5f3ce9027c4e5aaf98dab4d75 (patch)
tree5dea884633337d0b78f9ec59780dd1733a6fcbf9 /core
parenta7f52d4665967b4331d38408ba81af37ec589cb4 (diff)
downloadframeworks_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.java2
-rw-r--r--core/java/com/android/internal/widget/ActionBarView.java29
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