summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2012-08-08 15:59:12 -0700
committerAdam Powell <adamp@google.com>2012-08-08 16:02:36 -0700
commit6322af54cfb74be22386e4b7d17350cebf2da58f (patch)
tree3ac0a84ea3c1c2f99cf341629f6215d0f32dc48c
parenta56d9cecee8a34e0554770ac6253dd3a76b9199c (diff)
downloadframeworks_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.java10
-rw-r--r--core/java/com/android/internal/widget/ActionBarView.java7
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());
}