diff options
author | Adam Powell <adamp@google.com> | 2012-08-08 15:59:12 -0700 |
---|---|---|
committer | Adam Powell <adamp@google.com> | 2012-08-08 16:02:36 -0700 |
commit | 6322af54cfb74be22386e4b7d17350cebf2da58f (patch) | |
tree | 3ac0a84ea3c1c2f99cf341629f6215d0f32dc48c | |
parent | a56d9cecee8a34e0554770ac6253dd3a76b9199c (diff) | |
download | frameworks_base-6322af54cfb74be22386e4b7d17350cebf2da58f.zip frameworks_base-6322af54cfb74be22386e4b7d17350cebf2da58f.tar.gz frameworks_base-6322af54cfb74be22386e4b7d17350cebf2da58f.tar.bz2 |
Fix indeterminate ProgressBars with weird sizes and padding; optimize
ActionBar measurement
Fix a bug where preserved aspect ratios in ProgressBar indeterminate
drawables were causing drawable bounds to be calculated incorrectly
when the ProgressBar had padding specified.
Measure the ActionBar menu view's height with EXACT measure mode,
preventing an extra measure pass to match child heights for some
cases.
Change-Id: I8c4678662a015b57ba2686d5b5c5fc27d4ef8d36
-rw-r--r-- | core/java/android/widget/ProgressBar.java | 10 | ||||
-rw-r--r-- | core/java/com/android/internal/widget/ActionBarView.java | 7 |
2 files changed, 10 insertions, 7 deletions
diff --git a/core/java/android/widget/ProgressBar.java b/core/java/android/widget/ProgressBar.java index a28e9ff..860e583 100644 --- a/core/java/android/widget/ProgressBar.java +++ b/core/java/android/widget/ProgressBar.java @@ -985,9 +985,13 @@ public class ProgressBar extends View { } private void updateDrawableBounds(int w, int h) { - // onDraw will translate the canvas so we draw starting at 0,0 - int right = w - mPaddingRight - mPaddingLeft; - int bottom = h - mPaddingBottom - mPaddingTop; + // onDraw will translate the canvas so we draw starting at 0,0. + // Subtract out padding for the purposes of the calculations below. + w -= mPaddingRight + mPaddingLeft; + h -= mPaddingTop + mPaddingBottom; + + int right = w; + int bottom = h; int top = 0; int left = 0; diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java index d6d2cf6..2108d0d 100644 --- a/core/java/com/android/internal/widget/ActionBarView.java +++ b/core/java/com/android/internal/widget/ActionBarView.java @@ -856,6 +856,7 @@ public class ActionBarView extends AbsActionBarView { final int paddingRight = getPaddingRight(); final int height = maxHeight - verticalPadding; final int childSpecHeight = MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST); + final int exactHeightSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY); int availableWidth = contentWidth - paddingLeft - paddingRight; int leftOfCenter = availableWidth / 2; @@ -871,16 +872,14 @@ public class ActionBarView extends AbsActionBarView { } else { homeWidthSpec = MeasureSpec.makeMeasureSpec(lp.width, MeasureSpec.EXACTLY); } - homeLayout.measure(homeWidthSpec, - MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); + homeLayout.measure(homeWidthSpec, exactHeightSpec); final int homeWidth = homeLayout.getMeasuredWidth() + homeLayout.getStartOffset(); availableWidth = Math.max(0, availableWidth - homeWidth); leftOfCenter = Math.max(0, availableWidth - homeWidth); } if (mMenuView != null && mMenuView.getParent() == this) { - availableWidth = measureChildView(mMenuView, availableWidth, - childSpecHeight, 0); + availableWidth = measureChildView(mMenuView, availableWidth, exactHeightSpec, 0); rightOfCenter = Math.max(0, rightOfCenter - mMenuView.getMeasuredWidth()); } |